달나라 노트

Hive : datediff (두 날짜 간의 차이 구하기, 두 시점 차이를 일단위로 구하기) 본문

SQL/Apache Hive

Hive : datediff (두 날짜 간의 차이 구하기, 두 시점 차이를 일단위로 구하기)

CosmosProject 2023. 10. 10. 23:12
728x90
반응형

 

 

 

Syntax

datediff(timestamp_1, timestamp_2)

 

(timestamp_1 - timestamp_2) 를 계산하여 일(day) 단위로 return합니다.

 

 

 

 

select  current_timestamp
        , date_add(current_timestamp, 30)
        , datediff(date_add(current_timestamp, 30), current_timestamp)
;


-- Result
2023-10-10 12:31:20.122000000
2023-11-09
30

 

date_add는 어떤 시점에 특정 일수를 더해줍니다.

 

- datediff(date_add(current_timestamp, 30), current_timestamp)

 

따라서 위 구문은 아래와 동일합니다.

datediff(2023-11-09, 2023-10-10)

 

2023-11-09와

2023-10-10 간의 차이를 일(day) 단위로 return하게 되고,

(2023-11-09 - 2023-10-10) 을 계산하여 30이 return됩니다.

 

 

 

 

 

select  current_timestamp
        , date_add(current_timestamp, 30)
        , datediff(current_timestamp, date_add(current_timestamp, 30))
;


-- Result
2023-10-10 12:31:20.122000000
2023-11-09
-30

 

- datediff(current_timestamp, date_add(current_timestamp, 30))

이 예시는 위에서 봤던 것과 동일하지만 순서가 다릅니다.

 

datediff(2023-10-10, 2023-11-09)

따라서 위왁와 같이 수정할 수 있습니다.

 

(2023-10-10 - 2023-11-09)를 계산하여 -30을 return합니다.

 

 

 

 

 

그리고 datediff() 함수의 또 다른 특징은 두 시점간의 차이를 일단위로 return한다는 것입니다.

 

select  datediff(timestamp '2023-11-13 20:00:00', timestamp '2023-11-12 00:00:00')
;


-- Result
1

위 예시를 보면

2023-11-13 20:00:00

2023-11-12 00:00:00

이 두 시점간의 차이이므로 24시간 + 20시간인 44시간의 차이가 있습니다.

하지만 44시간은 2일(= 48시간)을 채우지 못하므로 1일을 채우지 못하는 시간은 모두 버리고 1(일, day)을 return합니다.

 

 

 

 

 

 

728x90
반응형
Comments