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

Spark中如何将带'T'的字符串转为Timestamp且去除毫秒保留格式?

解决Timestamp类型转换后无毫秒显示的问题

第一步:正确完成字符串到Timestamp的转换

你之前因为格式参数没包含'T'导致转换出null,解决这个问题很简单,调用to_timestamp时必须匹配原字符串的格式:

-- 示例转换语句
SELECT to_timestamp('2022-03-15T01:46:32', 'yyyy-MM-dd"T"HH:mm:ss') AS converted_ts;

这里格式字符串里的"T"要和原字符串的分隔符完全对应,这样就能成功得到Timestamp类型的结果。

第二步:截断毫秒,保留Timestamp类型

Timestamp本身是带时间精度的,默认会显示毫秒位(即使原数据没有)。要去掉毫秒同时保持Timestamp类型,直接用时间截断函数把精度控制到秒级即可:

-- 截断到秒级,去除毫秒
SELECT date_trunc('second', to_timestamp('2022-03-15T01:46:32', 'yyyy-MM-dd"T"HH:mm:ss')) AS no_millisecond_ts;

date_trunc('second', ...)会把Timestamp的毫秒部分置为0,返回的仍然是Timestamp类型,此时显示出来就是yyyy-MM-dd HH:mm:ss的格式,不会带毫秒。

如果是在其他SQL方言(比如Oracle)中,可以用TRUNC(your_timestamp_column, 'SS')来实现同样的效果,核心都是截断时间精度到秒,同时保留Timestamp类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:29:57