만약 현재 날짜를 출력하려면 아래와 같은 방식을 사용하면된다.
SELECT NOW()::date;
SELECT CURRENT_DATE;
이때 NOW()::date의 경우 현재의 정확한 날짜와 시간을 TIMESTAMP WITH TIME ZONE 형태로 반환하는데 ::date를 사용하여 NOW() 함수의 결과에서 시간 부분을 제거하고 날짜 부분만 추출한다.
즉, 현재 날짜와 시간 정보를 가져온 후 날짜에 해당하는 부분만 추출해서 가져오기 때문에 단순히 날짜만 필요한 경우는 CURRENT_DATE를 사용하는 것이 더 좋다.
- TO_CHAR 함수
다양한 형식의 날짜가 필요한 경우 TO_CHAR함수를 이용할 수 있다.
TO_CHAR함수는 여러 식별자에 해당하는 형식으로 날짜와 시간을 문자열로 변환하는 함수이다.
이는 다음과 같이 사용한다.
SELECT TO_CHAR(column, 'dd/mm/yyyy') FROM table;
식별자의 종류는 아래 사이트에서 식별자의 전체 목록을 볼 수 있다.
https://www.postgresql.org/docs/current/functions-formatting.html
9.8. Data Type Formatting Functions
9.8. Data Type Formatting Functions # The PostgreSQL formatting functions provide a powerful set of tools for converting various data types …
www.postgresql.org
- 날짜 간의 차이 계산
만약 특정 날짜 사이의 기간을 측정해야 하는 경우 먼저 두 날짜 데이터가 서로 연산이 가능한 형태인지 파악을 해야한다.
PostgreSQL의 경우 날짜 형식은 기본적으로 ISO 8601 표준을 따르기 때문에 날짜를 YYYY-MM-DD 형식으로 표현해야한다.
이때 다른 형식이 사용된 데이터의 경우는 인식할 수 있는 날짜 형식으로 변환해야 하는데 아래와 같이 변환하면 된다.
SELECT TO_DATE('01/02/2024', 'DD/MM/YYYY');
혹은 'YYYY/MM/DD' 과 같이 표준적으로 널리 사용되는 형식의 경우 아래와 같이 DATE키워드를 사용해서 DATE타입으로 변환시킬 수 있다.
SELECT DATE '2024/02/01';
이제 두 날짜 간의 차이를 계산하기 위해서는 AGE함수를 사용해 아래처럼 계산하면 두 기간 사이의 시간 간격이 나오게 된다.
SELECT AGE(DATE '2024/02/01', DATE '2000/11/03');
# 결과: 23 years 2 mons 28 days
- 특정 날짜 추출
만약에 데이터 중에서 특정 년도 혹은 특정 달에 해당하는 데이터를 추출하는 경우가 있을 수 있다.
이러한 경우 EXTRACT함수를 이용해서 해당 날짜의 특정 정보를 추출하면 된다.
SELECT EXTRACT (DAY FROM DATE '2024/02/01') AS DAY;
# 결과: 1
그리고 예를 들면 2000년도 이후의 모든 데이터를 추출한다와 같이 특정 기간 이후의 데이터를 뽑는 경우 2000-01-01이후의 데이터를 필터할 수도 있지만 DATE_TRUNC함수를 이용해서 해당하는 단위 만큼 남기고 나머지는 버려서 계산할 수도 있다.
SELECT DATE_TRUNC('year', DATE '2024/02/01');
# 결과: 2024-01-01 00:00:00+09
- INTERVAL
INTERVAL함수는 시간 간격을 나타내는 데이터 타입으로 기간이나 시간 차이를 표현할 때 사용한다.
이를 사용하면 특정 날짜나 시간에서 특정 기간을 더하거나 빼는 연산을 수행할 수 있어 시간 관련 데이터를 다룰 때 유연성을 제공한다.
SELECT DATE '2024/02/01' + INTERVAL '5 days';
# 결과: 2024-02-06 00:00:00
SELECT DATE '2024/02/01' + INTERVAL '4 months 5 days';
# 결과: 2024-06-06 00:00:00
'컴퓨터 > 데이터베이스' 카테고리의 다른 글
[데이터 베이스] GROUP BY (0) | 2024.02.10 |
---|---|
[데이터 베이스] JOIN (1) | 2024.02.06 |
[데이터 베이스]SQL 기본 구문 (1) | 2024.01.27 |
[데이터 베이스]SQL & Query (1) | 2024.01.25 |
[데이터 베이스]DataBase (0) | 2024.01.24 |