달나라 노트

Presto : date_add() (시간 더하기, 날짜 더하기, 특정 기간 더하기) 본문

SQL/Presto

Presto : date_add() (시간 더하기, 날짜 더하기, 특정 기간 더하기)

CosmosProject 2023. 10. 11. 15:03
728x90
반응형

 

 

 

Presto의 date_add() 함수는 어떤 시점에 특정 시간 간격(년, 월, 일, 분기, 주, 시간, 분, 초, 밀리초)을 더하고 빼는 역할을 해줍니다.

 

 

Syntax

date_add(unit, value, timestamp)

 

- unit

더할 시간 간격의 단위를 의미합니다.

year -> 년

month -> 월

day -> 일

quarter -> 분기

week -> 주차

dayofweek -> 요일

hour -> 시

minute -> 분

second -> 초

millisecond -> 밀리초

 

 

- value

더할 시간 간격을 의미합니다.

더하고싶으면 양수를 쓰면 되고, 빼고 싶으면 음수를 적으면 됩니다.

 

 

- timestamp

value를 더할 대상이 되는 timestamp입니다.

timestamp 뿐 아니라 date, time 등의 형식도 올 수 있습니다.

다만, date, time, timestamp가 아닌 문자, 일반 숫자 등이 오면 에러가 발생합니다.

 

 

결과적으로 date_add 함수는 timestamp + value(단위 = unit)의 값을 계산하여 return합니다.

 

 

 

 

 

 

select  date_add('year', 3, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2026-10-05 13:51:24

 

- date_add('year', 3, timestamp '2023-10-05 13:51:24.2834')

2023-10-05 13:51:24.2834 에서 3(year)를 더합니다.

따라서 2026-10-05 13:51:24를 더합니다.

 

 

 

select  date_add('month', 2, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-12-05 13:51:24

 

2023-10-05 13:51:24 에서 2 개월(month)을 더합니다.

따라서 2023-12-05 13:51:24가 return됩니다.

 

모두 다 이런 방식입니다.

 

아래에는 이와 동일한 방식으로 unit을 변화하여 사용한 예시입니다.

 

 

 

select  date_add('day', 13, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-10-18 13:51:24

13 일(day)을 더하는 예시입니다.

 

 

 

select  date_add('quarter', 3, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2024-07-05 13:51:24

3 분기(quarter)를 더하는 예시입니다.

3분기이면 9개월이므로 2023-10-05 13:51:24에서 9개월을 더한 2024-07-05 13:51:24를 return합니다.

 

 

 

select  date_add('week', 3, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-10-26 13:51:24

3 주(week)를 더하는 예시입니다.

3주는 21일이므로 2023-10-05 13:51:24에서 21일을 더한 2023-10-26 13:51:24가 return됩니다.

 

 

 

select  date_add('hour', 10, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-10-05 23:51:24

10 시간(hour)을 더하는 예시입니다.

 

 

 

select  date_add('minute', 5, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-10-05 13:56:24

5 분(minute)을 더하는 예시입니다.

 

 

 

select  date_add('second', 80, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-10-05 13:52:44

80 초(second)를 더하는 예시입니다.

 

13:51:24에서 80초를 더하면 13:52:44가 되므로 2023-10-05 13:52:44가 return됩니다.

 

 

 

 

select  date_add('millisecond', 900, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-10-05 13:51:25

900 밀리초(millisecond)를 더하는 예시입니다.

13:51:24.2834에 900millisecond(= 0.900s)를 더하면 13:51:25.1834가 되므로,

2023-10-05 13:51:25가 return된 것을 볼 수 있습니다.

 

 

 

 

 

select  date_add('day', -20, timestamp '2023-10-05 13:51:24.2834')
        , date_add('hour', -10, timestamp '2023-10-05 13:51:24.2834')
;


-- Result
2023-09-15 13:51:24
2023-10-05 03:51:24

만약 어떤 시간 간격을 빼고싶으면 위처럼 value 값을 음수로 적어주면 됩니다.

 

 

 

 

 

 

728x90
반응형
Comments