Hive中unix_timestamp('2022-07-29')返回null的原因及解决咨询
Hive中unix_timestamp('yyyy-MM-dd')返回null的解决方法
问题原因
Hive的unix_timestamp()函数仅传入日期字符串时,默认会按yyyy-MM-dd HH:mm:ss格式解析。传入'2022-07-29'这类仅含日期的字符串时,因格式不匹配解析失败,返回null。而CURRENT_DATE是日期类型,函数会自动适配类型,所以能正常返回时间戳。
解决办法
有两种方式可获取正确时间戳:
指定日期格式参数
调用unix_timestamp的双参数版本,明确传入日期字符串的格式:select unix_timestamp('2022-07-29', 'yyyy-MM-dd');该语句会按指定的
yyyy-MM-dd格式解析字符串,返回2022-07-29 00:00:00对应的时间戳。先将字符串转为日期类型
用to_date()函数把字符串转成日期类型后,再传入unix_timestamp:select unix_timestamp(to_date('2022-07-29'));to_date()会识别'2022-07-29'为合法日期格式,转换后的日期类型可被unix_timestamp正确处理。
内容的提问来源于stack exchange,提问作者Sudeep
相关产品推荐
相关产品推荐

