在编写 Hive SQL 进行日期运算时,常常需要对时间进行加减处理。Hive 贴心提供了一个强大的日期函数——DATEADD,用于向日期时间字段添加指定的时间间隔。下面直接来看它的语法:

DATEADD(interval_unit, number_of_intervals, date)
参数说明如下:
interval_unit:时间间隔单位,支持年(YEAR)、季度(QUARTER)、月(MONTH)、日(DAY)、小时(HOUR)、分钟(MINUTE)、秒(SECOND)等多种单位。number_of_intervals:要添加的时间间隔数量,正数表示向后增加,负数表示向前减少。date:待操作的日期,可以是日期字符串(例如'2021-01-01')、日期类型(DATE、TIMESTAMP),也可以是日期时间表达式。
下面通过几个实际例子来演示,一看就懂:
- 给日期增加1年:
SELECT DATEADD(YEAR, 1, '2021-01-01'); -- 返回 '2022-01-01'
- 增加3个月:
SELECT DATEADD(MONTH, 3, '2021-01-01'); -- 返回 '2021-04-01'
- 增加2小时:
SELECT DATEADD(HOUR, 2, '2021-01-01 00:00:00'); -- 返回 '2021-01-01 02:00:00'
- 增加30分钟:
SELECT DATEADD(MINUTE, 30, '2021-01-01 00:00:00'); -- 返回 '2021-01-01 00:30:00'
需要注意的是,当给时间戳增加小时或分钟时,日期会自动进行进位计算。例如 DATEADD(HOUR, 30, '2021-01-01 00:00:00'),结果会直接跳到第二天。因此使用时只需计算好单位,其余部分由Hive自动处理。
