date, time, timestamp
date 2012-08-08'
-> 결과 : 2012-08-08
time '01:00'
-> 결과: 01:00:00.000
timestamp '2012-08-08 01:00'
-> 결과 : 2012-08-09 01:00:00.000
date and time functions
current_date
: 현재 날짜를 반환
current_time
: 현재 시간을 반환
current_timestamp
= now()
: 현재 타임스탬프를 반환
date(x)
date x
= date(x)
= cast(x as date)
: x의 타입의 date로 변환
📌(x)의 데이터 타입이 date
, time
, timstamp
이여야 함📌
unit(x)
: date -> bigint (숫자형)extract
: date -> bigint (숫자형)to_char
: date -> varchar (문자형)year
, quarter
, month
, week
, day
, hour
...date
, time
, timstamp
이여야 함⭐️year(x)
: x에서 연도 반환
⭐️month(x)
: x에서 월 반환
⭐️week(x)
: x에서 해당 연도의 주를 반환 (1 ~ 53)
⭐️hour(x)
: x에서 시간 반환 (0 ~ 23)
⭐️quarter(x)
: x에서 분기 반환 (1 ~ 4)
-day(x)
= day_of_month(x)
: 해당 월의 일
(1~31일)을 반환
⭐️day_of_week(x)
: x에서 해당 주의 요일
(1(월)~7(일))을 반환
-day_of_year(x)
: x에서 해당 연도의 일(1 ~ 366일)를 반환
select year(date '2022-03-20') -- 결과 : 2022
select month(date '2022-03-20') -- 결과 : 3
select week(date '2022-03-20') -- 결과 : 11
select day(date '2022-03-20') -- 결과 : 20
select day_of_week(date '2022-03-20') -- 결과 : 7
extract(unit from x)
select extract(year from date('2022-03-20')) -- 결과 : 2022
select extract(month from date '2022-03-20') -- 결과 : 3
select extract(week from date('2022-03-20')) -- 결과 : 11
select extract(day from date '2022-03-20') -- 결과 : 20
select extract(day_of_week from date('2022-03-20')) --결과 : 7
-- timestamp or date -> 특정 형태의 varchar로 바꾸는 방법
-- x : timestamp or date 타입 형태
-- ex) x = 2022-03-20 15:54:01.084
SELECT
to_char(x, 'yyyy-mm-dd') -- 결과 : 2022-03-20
, to_char(x, 'yyyy') -- 결과 : 2022
, to_char(x, 'yyyy-mm') -- 결과 : 2022-03
, to_char(x, 'yyyy/mm/dd') -- 결과 : 2022/03/20
, to_char(x, 'mm') -- 결과 : 03
-종류 : date_add
, date_diff
, interval
-unit : year
, quarter
, month
, week
, day
, hour
...
-x 타입 : date
, time
, timstamp
이여야 함
x + Interval 'value' unit
= x + (Interval 'value' unit)
x - Interval 'value' unit
= x - (Interval 'value' unit)
select date '2022-03-20' + interval '2' month -- 결과 : 2022-05-20
select date '2022-03-20' + (interval '2' month) -- 결과 : 2022-05-20
select date '2022-03-20' - interval '2' month -- 결과 : 2022-01-20
select date '2022-03-20' - (interval '2' month) -- 결과 : 2022-01-20
date_add('unit', value, x)
select date_add('month', 2, date('2022-03-20')) -- 결과 : 2022-05-20
select date_add('month', -2, date('2022-03-20')) -- 결과 : 2022-01-20
date_diff('unit', x1, x2)
x2 - x1
값을 반환 select date_diff('month', date('2022-03-20'), date('2022-05-20')) --결과 : 2
-종류 : date_trunc
-unit : year , quarter, month, week, day, hour ...
-x 타입 : date, time, timstamp 이여야 함
date_trunc('unit', x)
select date_trunc('year', date '2022-08-20') -- 결과 : 2022-01-01
select date_trunc('month', date '2022-08-20') -- 결과 : 2022-08-01
select date_trunc('week', date '2022-08-20') -- 결과 : 2022-08-15