You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hive查询:将'4/12/2023 15:37'格式时间转为2023-12-04(to_date返回空值)

解决Hive中自定义日期格式转换为空的问题

问题原因

to_date()函数默认仅能识别yyyy-MM-dd或yyyy-MM-dd HH:mm:ss格式的字符串,而你的日期字符串是dd/MM/yyyy HH:mm(如4/12/2023 15:37),格式不匹配导致返回空值。

解决方案

需要指定原字符串的格式进行解析,再转换为目标日期格式,以下两种方法均可实现:

方法1:unix_timestamp + from_unixtime组合

先通过unix_timestamp指定原格式解析字符串得到时间戳,再用from_unixtime转换为目标日期格式:

-- 测试单个值
SELECT from_unixtime(unix_timestamp('4/12/2023 15:37', 'd/MM/yyyy HH:mm'), 'yyyy-MM-dd') AS target_date;

-- 针对列查询(替换datetime_col和your_table为实际名称)
SELECT from_unixtime(unix_timestamp(datetime_col, 'd/MM/yyyy HH:mm'), 'yyyy-MM-dd') AS target_date FROM your_table;

方法2:date_format + to_timestamp组合(Hive 2.1.0及以上版本支持)

先将字符串转为带格式的时间戳,再提取目标日期格式:

-- 测试单个值
SELECT date_format(to_timestamp('4/12/2023 15:37', 'd/MM/yyyy HH:mm'), 'yyyy-MM-dd') AS target_date;

-- 针对列查询(替换datetime_col和your_table为实际名称)
SELECT date_format(to_timestamp(datetime_col, 'd/MM/yyyy HH:mm'), 'yyyy-MM-dd') AS target_date FROM your_table;

注意事项

  • 格式符需严格匹配原字符串:d表示1位或2位的日,MM表示2位的月,yyyy是4位年,HH是24小时制小时,mm是分钟。
  • 若原字符串的月/日是1位或2位混合,d和MM格式符可自动兼容识别。

内容的提问来源于stack exchange,提问作者Zikra Noman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:07:07