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

Spark SQL中如何将DDMMMYYYY HH:mm:ss:ssssss格式的时间戳转换为yyyy-MM-dd格式

解决Spark SQL中自定义时间戳转yyyy-MM-dd日期的问题

你的问题出在没有指定时间戳的自定义格式——Spark的to_date函数默认只识别标准日期格式(比如yyyy-MM-dd或ISO格式),而你的输入是ddMMMyyyy:HH:mm:ss.SSSSSS这种非标准格式,直接调用自然会返回null。

正确实现方法

使用to_date函数的第二个参数,明确指定输入字符串的格式即可:

select to_date('15APR2021:03:53:54.297856', 'ddMMMyyyy:HH:mm:ss.SSSSSS') as formatted_date;

执行后会得到预期结果:

+--------------+
|formatted_date|
+--------------+
|    2021-04-15|
+--------------+

格式符说明

这里用到的关键格式符对应含义:

  • dd: 两位数字的日期(比如示例中的15)
  • MMM: 三位英文月份缩写(比如APR对应4月,Spark会自动识别大小写)
  • yyyy: 四位数字的年份(比如示例中的2021)
  • HH:mm:ss.SSSSSS: 时间部分(小时:分钟:秒.微秒),虽然to_date最终只提取日期,但必须完整匹配输入字符串的结构,否则解析会失败。

批量处理表字段示例

如果是处理表中的时间戳字段,写法类似:

select to_date(timestamp_column, 'ddMMMyyyy:HH:mm:ss.SSSSSS') as date_column
from your_table;

这样就能把所有同格式的时间戳批量转换成yyyy-MM-dd格式的日期。

内容的提问来源于stack exchange,提问作者Manoj Kumar G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:52:35