Hive中dateadd函数只能处理日期类型,不能直接对字符串进行加减。必须先用to_date或cast将字符串转为日期,然后再调用dateadd执行加减操作。例如,将字符串'2021-08-01'用to_date转换为日期后加一天,结果返回'2021-08-02'。注意to_date需指定日期格式,格式如'yyyy-MM-dd'。
不少人在用 Hive 处理日期时,都会碰到一个让人挠头的问题:dateadd 函数到底能不能直接处理字符串?答案是——不能。这个函数是为日期类型字段量身定做的,它接受一个时间间隔(比如天、小时、分钟)和一个日期值,然后老老实实地做加法,返回一个新的日期。但如果你直接塞给它一个字符串,它会一脸懵。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
那如果手里只有字符串,该怎么办?其实很简单,先转换类型,再用函数。Hive 提供了 to_date 或 cast 这类转换工具,把字符串“翻译”成日期,之后 dateadd 就能正常工作了。举个直观的例子:
SELECT dateadd(day, 1, to_date('2021-08-01', 'yyyy-MM-dd')) as new_date;
这段代码先通过 to_date 把字符串 '2021-08-01' 转换成日期,然后 dateadd 在其基础上加 1 天,结果就是 '2021-08-02'。整个过程清晰流畅,完全没有歧义。记住这个套路,以后遇到类似场景就不会卡壳了。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述