새벽코딩

[PostgresDB] 7. Timestamptz 본문

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 사용법"