在Hive中,处理时间数据的函数非常有用,尤其是在处理包含时间戳或日期字段的大数据时。以下是一些Hive中相对频繁使用的时间处理函数,包括它们的名称、参数、功能以及SQL示例。
1. from_unixtime
-
参数 :
bigint unixtime, [string format]
-
功能 :将Unix时间戳(秒)转换为指定格式的字符串。如果未指定格式,则默认为
yyyy-MM-dd HH:mm:ss
。 -
SQL示例 :
sqlSELECT from_unixtime(unix_timestamp(), 'yyyy-MM-dd HH:mm:ss') AS formatted_time;
2. unix_timestamp
-
参数 :
[string date]
,[string pattern]
-
功能:将字符串(日期)转换为Unix时间戳(秒)。如果未指定日期字符串,则返回当前时间的Unix时间戳。如果指定了模式(pattern),则按该模式解析日期字符串。
-
SQL示例 :
sqlSELECT unix_timestamp('2023-04-01 12:00:00', 'yyyy-MM-dd HH:mm:ss') AS timestamp_seconds;
3. date_format
-
参数 :
string date, string format
-
功能:将日期/时间字符串按照指定的格式进行格式化。
-
SQL示例 :
sqlSELECT date_format('2023-04-01 12:00:00', 'yyyy-MM-dd') AS formatted_date;
4. to_date
-
参数 :
string timestamp
-
功能 :将时间戳字符串转换为日期(
yyyy-MM-dd
)格式。 -
SQL示例 :
sqlSELECT to_date('2023-04-01 12:00:00') AS date_only;
5. current_date
和 current_timestamp
-
参数:无
-
功能 :
current_date
返回当前日期(yyyy-MM-dd
),而current_timestamp
返回当前的日期和时间(包括时区信息,如果配置了的话)。 -
SQL示例 :
sqlSELECT current_date AS today, current_timestamp AS now;
6. date_add
-
参数 :
string startdate, int days
-
功能:在日期上加上指定的天数。
-
SQL示例 :
sqlSELECT date_add('2023-04-01', 10) AS new_date;
7. date_sub
-
参数 :
string startdate, int days
-
功能:从日期中减去指定的天数。
-
SQL示例 :
sqlSELECT date_sub('2023-04-11', 10) AS previous_date;
8. datediff
-
参数 :
string enddate, string startdate
-
功能:计算两个日期之间的天数差。
-
SQL示例 :
sqlSELECT datediff('2023-04-11', '2023-04-01') AS days_between;
9. year
、month
、day
、hour
、minute
、second
-
参数 :
string date
-
功能:分别提取日期时间字符串中的年、月、日、小时、分钟、秒部分。
-
SQL示例 :
sqlSELECT year('2023-04-01 12:00:00') AS year, month('2023-04-01 12:00:00') AS month;
。