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

Spark 3.3中如何生成无T和+符号的指定格式时间戳

在PySpark 3.3中自定义时间戳输出格式

要把current_timestamp()/now()生成的ISO格式时间戳(带T和时区偏移)转成yyyy-MM-dd HH:mm:ss.SSS格式,有两种实用方案:

1. 单查询内用date_format函数转换

如果只是特定查询需要这个格式,直接用Spark SQL的date_format函数将时间戳类型转为指定格式的字符串:

spark.sql("""
    select 
        date_format(current_timestamp(), 'yyyy-MM-dd HH:mm:ss.SSS') as current_ts,
        date_format(now(), 'yyyy-MM-dd HH:mm:ss.SSS') as now_ts
    from dbo.products
""").display()

执行后输出示例:

2023-08-25 09:04:21.684  2023-08-25 09:04:21.684

2. 设置全局配置统一时间戳显示格式

如果所有查询都需要统一的时间戳输出格式,可以修改Spark的全局配置,改变timestamp类型默认的字符串转换格式(Spark 3.1+支持该参数):

# 设置全局时间戳输出格式
spark.conf.set("spark.sql.timestampTypeToStringFormat", "yyyy-MM-dd HH:mm:ss.SSS")

# 执行原查询即可得到目标格式
spark.sql("""
    select current_timestamp(), now() from dbo.products
""").display()

这种方式下,返回的列仍然是timestamp类型,但显示时会自动套用你指定的格式,不需要在每个查询里写转换函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:35:09