Hive中的時間類型主要包括以下幾種:
- 時間戳(Timestamp):表示從1970年1月1日00:00:00 UTC(協調世界時)到某個時間點之間的毫秒數。它是一個64位的有符號整數,可以精確到毫秒級別。
- 日期(Date):表示一個特定的日期,即年、月、日的組合。在Hive中,日期通常用32位整數表示,按照YYYYMMDD的格式進行編碼。
- 時間(Time):表示一天中的某個時間點,不包括日期部分。它通常用32位整數表示,按照HHMMSS的格式進行編碼。
- 時間戳日期(TimestampDate):這是Hive中特有的數據類型,它將時間戳和日期組合在一起,形成一個64位的值。這個類型主要用于需要同時包含日期和時間信息的場景。
Hive提供了許多日期函數來處理這些時間類型。以下是一些常用的日期函數:
- to_date(string str):將字符串轉換為日期類型。例如,
to_date('2023-07-01')
將返回一個表示2023年7月1日的日期對象。
- from_unixtime(bigint timestamp):將Unix時間戳(以毫秒為單位)轉換為時間戳類型。例如,
from_unixtime(1680444800000)
將返回一個表示2023年7月1日00:00:00 UTC的時間戳。
- unix_timestamp(date d):將日期類型轉換為Unix時間戳(以毫秒為單位)。例如,
unix_timestamp(to_date('2023-07-01'))
將返回一個表示2023年7月1日00:00:00 UTC的Unix時間戳。
- date_add(date d, int interval):在給定的日期上添加指定的時間間隔。例如,
date_add(to_date('2023-07-01'), 30)
將返回一個表示2023年7月31日的日期對象。
- date_sub(date d, int interval):在給定的日期上減去指定的時間間隔。例如,
date_sub(to_date('2023-07-01'), 30)
將返回一個表示2023年6月29日的日期對象。
- date_format(date d, string pattern):將日期按照指定的格式進行格式化。例如,
date_format(to_date('2023-07-01'), 'yyyy-MM-dd')
將返回字符串’2023-07-01’。
- dayofweek(date d):返回給定日期是星期幾(1表示星期日,2表示星期一,依此類推)。
- dayname(date d):返回給定日期的星期名稱(例如’Sunday’、'Monday’等)。
- month(date d):返回給定日期的月份(1表示一月,2表示二月,依此類推)。
- year(date d):返回給定日期的年份。
這些函數可以幫助您在Hive中輕松地進行日期和時間操作。