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

Impala中将含AM/PM的String列转换为Timestamp的方法咨询

Impala字符串时间转Timestamp类型解决方案

1、带AM/PM标识的字符串转Timestamp

转换失败的核心原因是没有匹配对应12小时制+AM/PM标识的格式模板,Impala的to_timestamp()函数支持自定义格式映射,使用dd-MMM-yyyy hh:mm a作为格式模板即可完成转换,其中:

  • dd:两位天数
  • MMM:英文缩写月份
  • yyyy:四位年份
  • hh:12小时制的小时数
  • mm:分钟数
  • a:匹配AM/PM标识

参考示例:

-- 测试转换语句
SELECT 
  to_timestamp('31-Oct-2016 12:00 AM', 'dd-MMM-yyyy hh:mm a') AS am_timestamp,
  to_timestamp('31-May-2015 12:00 PM', 'dd-MMM-yyyy hh:mm a') AS pm_timestamp;

如果遇到月份缩写识别异常,可先在当前会话执行set locale = 'en_US'; 再执行转换语句。

2、无AM/PM标识的字符串转Timestamp

该类字符串默认按24小时制处理,使用dd-MMM-yyyy HH:mm作为格式模板即可,其中HH代表24小时制的小时数。

参考示例:

-- 测试转换语句
SELECT to_timestamp('31-Oct-2016 12:00', 'dd-MMM-yyyy HH:mm') AS result_timestamp;

注意:如果你的无标识字符串实际为12小时制,需要先自行补全AM/PM标识后再使用第一种方案转换,避免12点时段的时间识别错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:36:07