반응형
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 |