[Postgresql] date_trunc()함수

date_trunc() 함수


trunc하면 보통 버림함수를 많이들 생각합니다.


예)

- 어떤 소수자리 숫자가 들어와도.

select trunc(1.23232412...)  -> 1

select trunc(1.99999999...)  -> 1


소수점 숫자는 버리는 trunc함수입니다.

사실 뒤의 숫자를 버리는 것이 아니라 0으로 만들어 버리는 것인데요.

1.0000000 어떤가요? 1과 1.0000


date_trunc함수는 이 trunc함수와 아주 유사합니다.


trunc함수는 무작정 숫자를 정수화하지만 특정 소수점까지는 유효하도록 표현할 수 있습니다.


예)

select trunc(1.2323,2)  -> 1.23

select trunc(1.2323,3)  -> 1.232


이처럼 말이죠.


- date_trunc(text, timestamp)

date_trunc함수는 첫번째 인자로 [year,month,day,hour,minute,second,millisecond] 와 같이 날짜 키워드가 옵니다.

뒤의 인자는 timestamp 데이터가 옵니다. 그 시점의 text 키워드까지의 값을 0(default 처리) 합니다.


예)

select date_trunc('month', '2019-04-01 12:12:12::timestamp')   ->  2019-04-01 00:00:00

select date_trunc('month', '2019-04-05 12:12:12::timestamp')   ->  2019-04-01 00:00:00


어떤느낌인지 감이 잡히시나요??


예)

select date_trunc('year', '2019-04-01 12:12:12::timestamp')   ->  2019-01-01 00:00:00


year로 지정해두면 두번쨰 인자로 들어온 날짜의 year까지만을 유효하게 취하고 이하는 default 값이 됩니다.


예)

select date_trunc('minute', '2019-04-01 12:12:12::timestamp')   ->  2019-04-01 12:12:00



댓글

Designed by JB FACTORY