SQL & DB/PostgreSQL

[PostgreSQL] 날짜 다루기(CURRENT_DATE, CURRENT_TIMESTAMP, CAST, EXTRACT)

YSY^ 2021. 1. 6. 20:47

오늘 날짜 추출하기(CURRENT_DATE, CURRENT_TIMESTAMP)

PostgreSQL은 현재 시간을 추출할때 자동으로 해당 타임존이 적용되서 리턴됩니다.

CURRENT_DATE로 날짜를, CURRENT_TIMESTAMP로 타임스템프를 추출할 수 있습니다.

select
	current_date as today,
	current_timestamp as timestamp;

 

지정된 날짜/시간 추출하기 (CAST)

CAST함수는 타입을 변환시키는 함수입니다. 문자를 숫자형식으로 변환하거나, 날짜형식으로 변환하거나, 참거짓으로 변환하는 등 다양하게 활용할 수 있습니다.

CAST함수의 문법은 다음과 같습니다.

CAST('변환대상' AS TYPE)

CAST함수를 활용해서 문자열을 날짜형식으로 변환해보겠습니다.

select
	CAST('2021-01-01' as date) as dt
	,CAST('2021-01-01 09:02:30' as timestamp) as ts;

또한 PostgreSQL에서는 '::"라는 문자열을 활용한 타입변환 기능을 지원한다.

select '2021-01-01'::date as dt 
	,'2021-01-01 09:02:30'::timestamp as ts;

날짜/시각에서 연,월,일 등 추출 (EXTRACT)

타임스탬프 자료형에서 년/월/일 등을 추출할 때는 EXTRACT 함수를 활용합니다.

EXTRACT(원하는 형태 FROM 대상)
select
	ts
	,EXTRACT(YEAR FROM ts) as year
	,EXTRACT(MONTH FROM ts) as month
	,EXTRACT(DAY FROM ts) as day
	,EXTRACT(HOUR FROM ts) as hour
	,EXTRACT(MINUTE FROM ts) as minute
	,EXTRACT(SECOND FROM ts) as second
from
	CAST('2021-01-01 09:02:30' as timestamp) as ts

Substring함수를 활용해서 년/월/일을 추출할 수도 있습니다.

select
	ts
	,substring(ts, 1, 4) as year
	,substring(ts, 6, 2) as month
	,substring(ts, 9, 2) as day
	,substring(ts, 12, 2) as hour
	,substring(ts, 15, 2) as minute
	,substring(ts, 18, 2) as second
from
	CAST('2021-01-01 09:02:30' as text) as ts;

728x90
반응형