PostgreSQL DATE_TRUNC() 함수

Shihab Sikder 2023년6월20일
  1. PostgreSQL에서 DATE_TRUNC() 함수 사용
  2. "밀리초" Postgres DATE_TRUNC()의 정밀도
  3. "초" Postgres DATE_TRUNC()의 정밀도
  4. "분" Postgres DATE_TRUNC()의 정밀도
  5. "시간" Postgres DATE_TRUNC()의 정밀도
  6. "일" Postgres DATE_TRUNC()의 정밀도
  7. Postgres에서 쿼리와 함께 DATE_TRUNC() 사용
PostgreSQL DATE_TRUNC() 함수

이 기사에서는 Postgres의 DATE_TRUNC() 기능과 코드 스니펫에 대해 설명합니다.

PostgreSQL에서 DATE_TRUNC() 함수 사용

Postgres에서는 주어진 타임스탬프를 특정 수준의 정밀도로 자르거나 반올림할 수 있습니다. 가장 가까운 분, 시간, 일, 월 등으로 자를 수 있습니다.

Postgres에서 DATE_TRUNC()에는 다음과 같은 간격이 있습니다.

Century
Day
Decade
Hour
Minute
Microsecond
Millisecond
Second
Month
Quarter
Week
Year

다음은 현재 타임스탬프입니다. 결과를 보기 위해 다른 간격으로 사용할 것입니다.

postgres=# SELECT NOW();
              now
-------------------------------
 2022-04-29 17:30:48.256668+06
(1 row)

"밀리초" Postgres DATE_TRUNC()의 정밀도

DATE_TRUNC()에서 정밀도로 “밀리초"를 사용합니다.

postgres=# SELECT DATE_TRUNC('millisecond', TIMESTAMP '2022-04-29 17:30:48.256668');
       date_trunc
-------------------------
 2022-04-29 17:30:48.256
(1 row)

밀리초는 256668입니다. 그런 다음 256으로 잘렸습니다.

"초" Postgres DATE_TRUNC()의 정밀도

여기에서는 DATE_TRUNC()의 정밀도로 "second"를 사용합니다.

postgres=# SELECT DATE_TRUNC('second', TIMESTAMP '2022-04-29 17:30:48.256668');
     date_trunc
---------------------
 2022-04-29 17:30:48
(1 row)

값을 반올림하기 위해 소수 부분이 잘린 것을 볼 수 있습니다.

"분" Postgres DATE_TRUNC()의 정밀도

DATE_TRUNC()에서 정밀도로 “분"을 사용했습니다.

postgres=# SELECT DATE_TRUNC('minute', TIMESTAMP '2022-04-29 17:30:48.256668');
     date_trunc
---------------------
 2022-04-29 17:30:00
(1 row)

분은 30:48이었습니다. DATE_TRUNC(),를 사용하여 30:00이 되었습니다.

"시간" Postgres DATE_TRUNC()의 정밀도

DATE_TRUNC()에서 "시간"을 정밀도로 사용하겠습니다.

postgres=# SELECT DATE_TRUNC('hour', TIMESTAMP '2022-04-29 17:30:48.256668');
     date_trunc
---------------------
 2022-04-29 17:00:00
(1 row)

17:30:48.25666817:00:00의 차이를 볼 수 있습니다.

"일" Postgres DATE_TRUNC()의 정밀도

DATE_TRUNC()에서 "일"을 정밀도로 사용하십시오.

postgres=# SELECT DATE_TRUNC('day', TIMESTAMP '2022-04-29 17:30:48.256668');
     date_trunc
---------------------
 2022-04-29 00:00:00
(1 row)

시간이 00:00:00이 된 것을 볼 수 있습니다. 하루를 마무리했습니다.

Postgres에서 쿼리와 함께 DATE_TRUNC() 사용

호텔 체크인 시 다음 MOCK_DATA를 사용합시다.

postgres=# SELECT * from MOCK_DATA;
 id  | first_name  |  last_name   |              email               |   gender    |  check_in
-----+-------------+--------------+----------------------------------+-------------+------------
   1 | Agustin     | Bawdon       | abawdon0@umn.edu                 | Male        | 2016-05-11
   2 | Maximilian  | Ber          | mber1@artisteer.com              | Male        | 2013-03-08
   3 | Randy       | Kline        | rkline2@pcworld.com              | Bigender    | 2019-01-01
   4 | Bonnibelle  | Mazillius    | bmazillius3@is.gd                | Female      | 2011-07-06
   5 | Rolland     | Hollidge     | rhollidge4@seesaa.net            | Male        | 2009-04-30
   6 | Sandro      | Hubbert      | shubbert5@nature.com             | Male        | 2019-11-26
   7 | Collin      | La Torre     | clatorre6@google.de              | Male        | 2016-02-12
   8 | Joleen      | Jerram       | jjerram7@instagram.com           | Female      | 2015-05-23
-- More  --

우리는 매년 체크인을 계산하고 싶습니다.

SELECT
    date_trunc('year', check_in) year_no,
    COUNT(id) Customers
FROM
    MOCK_DATA
GROUP BY
    year_no
ORDER BY
    year_no;

출력:

        year_no         | customers
------------------------+-----------
 2008-01-01 00:00:00+06 |        17
 2009-01-01 00:00:00+06 |        20
 2010-01-01 00:00:00+06 |        15
 2011-01-01 00:00:00+06 |        20
 2012-01-01 00:00:00+06 |        19
 2013-01-01 00:00:00+06 |        18
 2014-01-01 00:00:00+06 |        13
 2015-01-01 00:00:00+06 |        24
 2016-01-01 00:00:00+06 |        18
 2017-01-01 00:00:00+06 |        13
 2018-01-01 00:00:00+06 |        23
 2019-01-01 00:00:00+06 |        17
 2020-01-01 00:00:00+06 |        16
 2021-01-01 00:00:00+06 |        12
 2022-01-01 00:00:00+06 |         5
(15 rows)

DATE_TRUNC()에 대한 자세한 내용은 공식 문서를 참조하세요. mockaroo를 사용하여 예제 데이터베이스를 생성할 수 있습니다.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website

관련 문장 - PostgreSQL Function