Programming/Postgres DB
[PostgresDB] 7. Timestamptz
midnightcoder
2022. 12. 15. 11:38
Timestamptz를 사용하여 시간을 기준으로 데이터를 filtering 할 수 있다.
> 지난 한달간 카드사용내역, 겨울시즌 반품이 많았던 품목, 휴가철에 가장 많이 팔린 비행기표 등 분석하는데 유용
How?
> 비교연산자, EXTRACT()함수 와 TO_CHAR() 함수를 사용
Timestamptz는 3가지 정보가 주어지는데
DATE + TIME + TIMEZONE으로 구성이 된다.
TIMEZONE은 London 시간을 기준으로 시간이 책정된다.
-------------------------------
현재 데이터셋
- 2022년 1월의 순수익 (amount) 은? 비교연산자와 논리연산자 'AND' 사용
-- F. 2022년 1월의 순수익(이체총합) 은?
SELECT
SUM(amount)
FROM
transactions
WHERE
created_at >= '2022-01-01'
AND
created_at < '2022-02-01'
;
결과
- 21년 12월 거래액 ? EXTRACT() 함수 사용
-- G. 2021년 12월의 순수익(이체총합) 은?
SELECT
SUM(amount)
FROM
transactions
WHERE
-- EXTRACT() : 시간값에서 특정 속성을 숫자로 추출!
-- 2021-12-01 10:00:21 +09 => YEAR(2021)
-- 2021-12-01 10:00:21 +09 => MONTH(12)
EXTRACT(YEAR from created_at) = 2021
AND
EXTRACT(MONTH FROM created_at) = 12
;
결과
- 2021년 11월의 순수익은 ? TO_CHAR() 함수 사용
-- H. 2021년 11월의 순수익은?
SELECT
SUM(amount)
FROM
transactions
WHERE
-- TO_CHAR() : 특정값을 다양한 형식 문자로 바꿔!
TO_CHAR(created_at, 'YYYY-MM') = '2021-11'
;
결과
- 2021년 11월과 2022년 1월의 총 순수익은?
-- I. 2021년 11월, 2022년 1월의 총 순수익은?
SELECT
SUM(amount)
FROM
transactions
WHERE
TO_CHAR(created_at, 'YYYY-MM') = '2021-11'
OR
TO_CHAR(created_at, 'YYYY-MM') = '2022-01'
;
** 추가 공부 :
구글링 : "postgresql extract 사용법"