[Presto]Date and Time Functions

InHwa Hong·2022년 1월 22일
0

SQL

목록 보기
3/10

1. Date & Time

  • 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로 변환


2. Functions

📌(x)의 데이터 타입이 date, time, timstamp이여야 함📌


2-1. Extraction Function(추출 기능)

  • 날짜에서 연도, 월, 주, 일 등의 정보만 추출하고 싶은 경우에 사용
    -종류 :
    1) unit(x) : date -> bigint (숫자형)
    2) extract : date -> bigint (숫자형)
    3) to_char : date -> varchar (문자형)
    -unit : year , quarter, month, week, day, hour ...
    -x 타입 : date, time, timstamp 이여야 함

1) unit(x) -> bigint

⭐️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

2) Extract -> bigint

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

3) TO_CHAR -> varchar

-- 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

2-2. Interval Functions(+, -)

-종류 : date_add , date_diff, interval
-unit : year , quarter, month, week, day, hour ...
-x 타입 : date, time, timstamp 이여야 함

1) Interval

x + Interval 'value' unit = x + (Interval 'value' unit)

  • x에 unit의 value만큼 더한값을 반환

x - Interval 'value' unit = x - (Interval 'value' unit)

  • x에 unit의 value만큼 뺀값을 반환
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

2) date_add

date_add('unit', value, x)

  • x에 unit의 value만큼 더한값을 반환
  • value 는 (+), (-) 둘다 가능
select date_add('month', 2, date('2022-03-20')) -- 결과 : 2022-05-20
select date_add('month', -2, date('2022-03-20')) -- 결과 : 2022-01-20

3) date_diff

date_diff('unit', x1, x2)

  • unit에 대한 x2 - x1 값을 반환
select date_diff('month', date('2022-03-20'), date('2022-05-20')) --결과 : 2 

2-3. Truncation Function(잘라내기 기능)

-종류 : date_trunc
-unit : year , quarter, month, week, day, hour ...
-x 타입 : date, time, timstamp 이여야 함

1) date_trunc

date_trunc('unit', x)

  • 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

0개의 댓글