在Hive中进行日期处理时,dateadd函数堪称最实用的工具,能够轻松实现各种灵活的日期加减操作。无论是向前推几天、向后加几小时,还是精确到毫秒级别的调整,它都能完美胜任。

先来看它的基本语法,结构非常直观:
dateadd(date, interval_unit, interval_value)
三个参数分别代表:
date:目标日期,支持日期字符串、DATE或TIMESTAMP类型,甚至可以直接传入时间戳。interval_unit:时间间隔单位,可选的有'DAY'、'HOUR'、'MINUTE'、'SECOND'、'MILLISECOND'。interval_value:要添加的数值,正数表示向后增加,负数表示向前减少。
以下示例能让你快速掌握dateadd的具体用法:
-
增加天数——以日期
2021-01-01为例,向后添加10天:SELECT dateadd('2021-01-01', 10, 'DAY') as new_date; -- 结果:'2021-01-11' -
增加小时——在
2021-01-01 12:00:00基础上增加5小时:SELECT dateadd('2021-01-01 12:00:00', 5, 'HOUR') as new_time; -- 结果:'2021-01-01 17:00:00' -
增加分钟——添加30分钟:
SELECT dateadd('2021-01-01 12:00:00', 30, 'MINUTE') as new_time; -- 结果:'2021-01-01 12:30:00' -
增加秒数——添加120秒(即2分钟):
SELECT dateadd('2021-01-01 12:00:00', 120, 'SECOND') as new_time; -- 结果:'2021-01-01 12:02:00' -
增加毫秒——添加500毫秒:
SELECT dateadd('2021-01-01 12:00:00', 500, 'MILLISECOND') as new_time; -- 结果:'2021-01-01 12:00:00.500'
由此可见,只要单位选对、数值给准,dateadd就能精准地完成日期时间的加减运算。负数同样适用,例如-10表示向前推10天,在计算历史日期时非常实用。无需再手动数天数或计算时差,一个函数调用即可轻松解决。
