[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