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

AWS Glue Job:将十进制时间值转为mm-dd-yyyy日期格式

解决AWS Glue Job导出current_timestamp到S3后显示为科学计数法的问题

问题根源

你看到的科学计数法数值,是Glue将current_timestamp()生成的Timestamp类型序列化为微秒级时间戳数值导致的,S3 Select读取时直接解析了这个数值而非日期类型。

两种解决方案

方案1:在Glue SQL中直接格式化日期(推荐)

不需要保留Timestamp类型的话,直接用Glue SQL的date_format函数将时间戳转成你需要的MM-dd-yyyy字符串格式,导出后S3 Select读取就是正常日期格式:

SELECT 
  -- 其他字段
  date_format(current_timestamp(), 'MM-dd-yyyy') AS load_Date
FROM your_source_table

注意:MM代表两位月份(01-12),dd代表两位日期(01-31),yyyy代表四位年份,不要和小写的mm(分钟)混淆。

方案2:保留Timestamp类型并在S3 Select中转换

如果必须保留原始Timestamp的数值存储格式,可在S3 Select查询时将科学计数法的时间戳数值转换为日期:
先将科学计数法数值转为微秒级整数,再转换为Timestamp,最后格式化:

SELECT 
  -- 其他字段
  date_format(
    date_add('1970-01-01', cast(load_Date / 1000000 AS BIGINT)),
    'MM-dd-yyyy'
  ) AS load_Date
FROM s3object s

解释:Glue默认将Timestamp序列化为从1970-01-01开始的微秒数,所以需要除以1000000转成秒数,再用date_add得到日期,最后格式化。

另外,如果你的Glue Job输出是Parquet格式,建议检查Job的输出配置,确保Timestamp类型被正确序列化——Parquet格式本身会保留类型信息,S3 Select可以直接识别为日期类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:18:13