PostgreSQL DATE_TRUNC() 함수
Shihab Sikder
2023년6월20일
-
PostgreSQL에서
DATE_TRUNC()
함수 사용 -
"밀리초"
PostgresDATE_TRUNC()
의 정밀도 -
"초"
PostgresDATE_TRUNC()
의 정밀도 -
"분"
PostgresDATE_TRUNC()
의 정밀도 -
"시간"
PostgresDATE_TRUNC()
의 정밀도 -
"일"
PostgresDATE_TRUNC()
의 정밀도 -
Postgres에서 쿼리와 함께
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.256668
과 17: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