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

如何在Spark SQL中执行INSERT语句插入Timestamp类型列

解决Spark SQL插入Timestamp类型值的问题

你报错的核心原因是日期格式符使用不符合Spark SQL规则,以下是几种可行的修正方案:

方案1:修正to_timestamp的格式参数

Spark SQL遵循Java日期格式规范,你之前的格式字符串存在两处错误:

  • 月份需用大写MM,小写mm代表分钟
  • 24小时制小时用HH,而非hh24
  • 纳秒部分用SSSSSSSSSS匹配9位数字

修正后的插入语句:

insert_query="insert into tbl2 partition(year='2022') values (101,to_timestamp('2019-06-13 13:22:30.521000000', 'yyyy-MM-dd HH:mm:ss.SSSSSSSSS'))"
spark.sql(insert_query)

方案2:直接传入ISO标准格式字符串

如果你的时间字符串是yyyy-MM-dd HH:mm:ss.SSSSSSSSS这类ISO兼容格式,无需调用to_timestamp,Spark会自动转换为Timestamp类型:

insert_query="insert into tbl2 partition(year='2022') values (101,'2019-06-13 13:22:30.521000000')"
spark.sql(insert_query)

方案3:通过时间戳数值插入

也可以传入毫秒/纳秒级时间戳,借助from_unixtime转换:

# 示例:基于毫秒级时间戳1560439350521转换
insert_query="insert into tbl2 partition(year='2022') values (101,from_unixtime(1560439350521/1000))"
spark.sql(insert_query)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 02:57:17