PostgreSQL

PostgreSQL 날짜 함수

서울 유생 2024. 10. 1. 18:46
반응형

 PostgreSQL에서 날짜 관련 함수는 특히 잘 사용해야 한다. DBMS마다 날짜 표현 방식이 많이 다른데 PostgreSQL에서는 어떻게 구성되어 있는지 알아보자. PostgreSQL의 DATE 타입은 '연. 월. 일' 정보만 사용할 수 있다. 시간 정보는 포함하지 않는다. timestamp 함수를 사용해서 '연월일시분초'를 출력할 수 있다.

1. TO_DATE

date 타입 변경 TO_DATE('20241001','yyyymmdd') or '20241001'::date
datetime 타입 변경 TO_TIMESTAMP('20241001101010', 'yyyymmddhh24miss'
or '20241001 101010'::timestamp
00시 00분 00초 '20241001'::timestamp
23시 59분 59초 '20241001'::timestapm + INTERVAL '1' + '1' day
- INTERVAL '1' second
일자간 차이 구하기 ('20241001'::date) - ('20230901'::date)
date() 1 DAY date 조회 day_col = '20241001'::date
date() 1 Month date 조회 month_col >= '20241001'::date
month_col < '20241001'::date + INTERVAL '1' month
timestamp () & timezone 1 DAY 조회 today_dt >= '20241001'::date:: timestamp
today_dt >= '20241001'::date:: timestamp + INTERVAL '1' day
timestamp () & timezone 1 Month 조회 today_dt >= '20241001'::date:: timestamp
today_dt >= '20241001'::date:: timestamp + INTERVAL '1' month
TO_DATE('20241001', 'yyyymmdd') 2024-10-01
TO_DATE('2024-10-01', 'yyyy-mm-dd')
TO_DATE('2024/10/01', 'yyyy/mm/dd')
TO_DATE('20241001', 'yyyy-mm-dd') Error

2. TO_TIMESTAMP

TO_TIMESTAMP('20241001233030', 'yyyymmddhh24miss') 2024-10-01 23:30:30 .000 +0900
TO_TIMESTAMP('2024-10-01 23:30:30', 'yyyy-mm-dd hh24:mi:ss)
TO_TIMESTAMP('2024/10/01 23:30:30', 'yyyy-mm-dd hh24:mi:ss)
TO_TIMESTAMP('2024/10/01 23:30:30', 'yyyy mm dd hh24:mi:ss)
TO_TIMESTAMP('2024/10/01 23:30:30', 'yyyy mm dd hh24:mi:ss)

 

-- 날짜 조회 SQL.

SELECT 
*
FROM tb_temp t1
WHERE t1.a BETWEEN TO_TIMESTAMP('2023-10-01, 'yyyy-mm-dd')
		AND TO_TIMESTAMP('2023-10-01, 'yyyy-mm-dd') + INTERVAL '1 day' - INTERVAL '1 second';
        
        
SELECT
*
FROM temp t1
WHERE t1.a >=TO_TIMESTAMP('2024-10-01', 'yyyy-mm-dd')
AND t1.a < TO_TIMESTAMP('2024-10-01', 'yyyy-mm-dd') + INTERVAL '1 day';

 

3. PostgreSQL 어제,오늘,내일 관련 함수

PostgreSQL에서 timezone에 따라 시간대가 달라지며 현재 세션 시간을 체크하는 것이 좋다.

'yesterday'::date 2024-09-30
'now'::date 2024-10-01
'tomorrow'::date 2024-10-02
'yesterday'::timestamp 2024-09-30 00:00:00 .000
'now'::timestamp 2024-10-01 18:00:00 .000
'tomorrow'::timestamp 2024-10-02 00:00:00 .000

4. PostgreSQL TO_CHAR

TO_CHAR(current_timestamp, 'Day') Tuesday
TO_CHAR(current_timestamp,'D') 3 (일요일 = 1, 토요일은 =7)
EXTRACT(dow FROM current_timestamp::date) 2 (일요일은 = 0, 토요일은 = 0)

 

'PostgreSQL' 카테고리의 다른 글

PostgreSQL 조건문과 기본 함수  (0) 2024.09.29
PostgreSQL 기본 문법 SQL 다루기  (4) 2024.09.28