[PostgreSQL] Timestamps and Extract

도톨이·2024년 3월 4일
0

SQL

목록 보기
5/19

Timestamps and Extract

시간과 날짜 정보를 보고하는 명령어와 함수를 살펴볼 예정이다.
데이터베이스를 쿼리할 떄보다 자체 데이터베이스를 만들 때 이러한 함수가 유리해진다.

Postgre는 다음과 같은 날짜 시간 정보를 가질 수 있다.

  • TIME(시간정보), DATE(날짜정보), TIMESTAMP(시간과날짜정보), TIMESTAMPTZ(시간, 날짜, 시간대 정보)

시간 데이터 유형을 선택할 때 신중하게 고려해야한다. 상황에 따라 날짜, 시간 및 시간대가 필요할 수도 필요하지 않을 수도 있기 때문이다. 직원이 근무한 시간을 계싼할 때는 시간이 필요하지만 시간대는 필요없을 것이다. 그러면 TIMESTAMPTZ는 필요하지 않다.

이번에는 이러한 데이터 유형과 관련된 함수를 배울 것이다.

  • TIMEZONE, NOW, TIMEOFDAY, CURRENT_TIME, CURRENT_DATE

NOW

NOW() 를 사용하면 현재 시간대, 날짜, 시간 정보를 볼 수 있다. 현재 내가 있는 시간을 timestamp 형식으로 표시한다.

TIMEOFDAY

TIMEOFDAY() 는 text 의 형태로 날짜, 시간을 가져온다.

CURRENT_DATE

CURRENT_DATE()는 현재 날짜를 date 형식으로 가져온다.

EXTRACT()

날짜 값의 하위 구성요소 출력하거나 할 때 사용한다. YEAR, MONTH, DAY, WEEK, QUARTER 과 같은 데이터값들을 갖는다.
다음 문법으로 사용할 수 있다.

EXTRACT(YEAR FROM date_col)

AGE()

타임스탬프가 지정된 현재 age 를 계산후 리턴한다.

AGE(date_col)

로 사용하고

다음과 같은 형식의 결과를 리턴할 것이다.

13 year 1 mon 5 days 01:34:13.003423

TO_CHAR()

TO_CHAR() 은 데이터 타입을 텍스트로 변환한다. timestamp 를 포매팅할 때 유용하다.

TO_CHAR(date_col, 'mm-dd-yyyy')

실습

payment 테이블 속 payment_date 칼럼은 timestamp 형식으로 되어있다. 여기서 연도를 추출해보자.

SELECT EXTRACT(YEAR FROM payment_date) FROM payment

TO_CHAR() 은 포매팅할 때 유용하게 사용할 수 있다.
TIMESTAMP 를 원하는 형식으로 출력할 수 있다.
포매팅 방법은 아래 사이트를 참고하면된다.
documentation

SELECT TO_CHAR(payment_date, 'MONTH-YYYY')
FROM payment

payment 테이블에서 월요일에 결제된 주문 수를 계산하려면 어떻게 할까?
Timestamp 에서 EXTRACT 를 통해 원하는 field 를 추출할 수 있다. 요일이 궁금하므로 "dow" 를 사용하면 일요일부터 토요일까지 요일을 0-6의 숫자로 나타낸다. 따라서 payment_date 라는 timestamp 칼럼에서 요일이 1(=월요일)일 때의 행의 개수를 COUNT 하면 된다.

SELECT COUNT(payment_date)
FROM payment
WHERE EXTRACT(dow FROM payment_date) = 1
profile
Computer Engineering

0개의 댓글

관련 채용 정보