본문 바로가기
BigData/Spark & Spark Tuning

[Hive,Spark] Hive, Spark의 Date Functions 정리, oracle,mysql에서 쓰일 수 있는 functions 언급

by 스파이디웹 2021. 8. 19.
728x90

1.자주 쓰이는 Hive,Spark Date Functions 정리

 

1. current_date() 현재의 날짜를 반환 (oracle은 current_date)

2. current_timestamp() 현재의 시각을 반환(밀리초까지)

(oracle은 current_timestamp, current_date,current_timestamp가 oracle에서는 동일하다.)

3. unix_timestamp() 현재의 시각을 unix시간으로 반환

  • unix_timestamp() 는 unix_timestamp(current_timestamp,'yyyy-MM-dd HH:mm:ss')와 같다.

4. unix_timestamp(str date) 입력한 시각,날짜를 unix시간으로 반환

  • yyyy-MM-dd HH:mm:ss 형태의 string값이여야 하며, 그렇지 않을 경우 null로 출력

5. unix_timestamp(str date, str pattern) 입력한 패턴의 시각,날짜를 unix시간으로 반환(mysql에서는 불가능)

ex)

unix_timestamp('02-12-2021 00:00:00','MM-dd-yyyy HH:mm:ss')

  • spark 에서는 unix_timestamp(col('columnname','format')과 같은 형태로 사용되어야 한다.
  • 일반 상수값을 col('columnname') 대신에 넣고 싶으면
    unix_timestamp(lit('2021-02-20'),'yyyy-MM-dd')) 와같은 형태로 사용
  • format은 yyyy부터 밀리초까지 조정할 수 있으며, yyyy만 할경우 01월 01일 00:00:00 시간으로 조정된다.

6. from_unixtime(bigint number of seconds,[str format]) unix시간을 yyyy-MM-dd HH:mm:ss의 형태(default format)로 바꿈, str format을 인자로 입력할 시, str format대로 바꾸어줌

7. date_format(timestamp or date or string, str format) (mysql에서는 date_format() 사용)

  to_date(str timestamp) timestamp를 date로 바꾸어줌 (oracle에서는 to_date() 사용)

ex)

date_format(lit('2021-02-12 00:00:00'),'yyyyMMddHHmmss')

2021-02-12 00:00:00 -> 2021-02-12


2. hive Date Function 정리

1. Hive에서는 date 데이터 타입이 없다.

2. Hive에서의 Dates는 그냥 string으로 취급된다.

3. 부적절한 date format에 대해서 관대한편이다.(효과적인 에러를 던지지않는다.)

4. HIve 에서는 date format에 호환되지 않는 format은 error를 던지지않고, NULL 결과를 리턴할 것이다.

5. date_format() 함수는 어떤 포멧으로도 변환시켜준다.

728x90

댓글