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

AWS Glue作业Spark SQL无法将int类型秒数添加至timestamp字段

问题原因
  • 使用的date_add函数功能为给日期/时间值添加天数,不支持秒级运算,同时要求第一个参数为date/timestamp类型,第二个参数为代表天数的int类型,你的传参顺序完全颠倒,不符合类型要求,因此触发类型不匹配报错。
  • 你需要的是timestamp秒级运算,应使用Spark SQL支持秒级时间调整的专用函数。
解决方法

写法1:使用timestampadd函数(推荐)

Spark SQL内置的timestampadd函数支持自定义时间单位的加减运算,语法为timestampadd(单位, 增量值, 原始时间戳),你的查询修正为如下即可:

spark.sql("SELECT abc.a, abc.b, abc.c, timestampadd(SECOND, abc.field1, abc.field2) AS d FROM abc")

参数说明:

  • 第一个参数填SECOND,指定运算单位为秒
  • 第二个参数填int类型的秒数字段abc.field1
  • 第三个参数填原始timestamp类型字段abc.field2
    返回结果为timestamp类型,完全符合预期:输入2021-08-05 04:00:00加30秒,输出为2021-08-05 04:00:30。

写法2:使用INTERVAL运算

也可以通过时间间隔乘法实现相同效果:

spark.sql("SELECT abc.a, abc.b, abc.c, abc.field2 + INTERVAL 1 SECOND * abc.field1 AS d FROM abc")
补充说明
  • 若field1为负数,两种写法都会自动执行减秒运算,无需额外处理。
  • 注意Spark SQL的查询语句需要用字符串包裹,你原写法中spark.sql(select ...)未给SQL语句加引号,也会触发语法错误,上述修正写法已补上对应的双引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:48:01