很多刚接触 Hive 的开发者,在面临日期运算需求时——尤其是想“减去若干天”的时候,第一反应往往是寻找 DATEADD 函数。但这里容易踩坑:Hive 中的 DATEADD 只能用来增加时间间隔,并不支持减法操作。真正用于日期减法的函数是 DATE_SUB。搞清楚这个区别,后续写代码就能避免走弯路,更高效地处理日期计算。

直接看两个最典型的示例,理解起来非常直观:
- 如果想在某个日期上增加 30 天,请使用
DATE_ADD(注意不要和DATEADD混淆,Hive 中的正式名称是DATE_ADD):
SELECT DATE_ADD(CURRENT_DATE, 30) FROM table_name; -- 在当前日期基础上加30天
- 如果想从某个日期减去 30 天,则应使用
DATE_SUB:
SELECT DATE_SUB(CURRENT_DATE, 30) FROM table_name; -- 从当前日期减去30天
上述示例中的 CURRENT_DATE 是 Hive 内置的获取当前日期函数,你也可以将其替换为任意日期字段或常量,例如 '2025-06-13',运算逻辑完全一致。核心原则非常简单:做日期加法就用 DATE_ADD,做日期减法就用 DATE_SUB,两者各司其职,牢记即可避免混淆。
