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

PySpark如何将DataFrame的Timestamp列转为YYYY-MM-DD格式字符串?

在PySpark中将Timestamp列转换为'YYYY-MM-DD'格式字符串的方法

当然可以!在PySpark里把Timestamp类型的列转换成指定格式的字符串是很常见的操作,这里有两种常用的方法,你可以根据需求选择:

方法一:使用date_format函数(灵活自定义格式)

这是最通用的方法,支持任意日期格式的转换,完全满足你要的'YYYY-MM-DD'格式需求。

代码示例:

from pyspark.sql import SparkSession
from pyspark.sql.functions import date_format

# 初始化SparkSession
spark = SparkSession.builder.appName("TimestampToDateString").getOrCreate()

# 构造测试DataFrame(假设已有包含Timestamp列的数据集)
sample_data = [("2023-05-12 08:45:30",), ("2024-03-20 16:20:00",)]
df = spark.createDataFrame(sample_data, ["original_timestamp"])

# 转换Timestamp列为指定格式的字符串
formatted_df = df.withColumn(
    "date_string", 
    date_format("original_timestamp", "yyyy-MM-dd")  # 这里用yyyy对应常规年份,若需周基年份可换为YYYY
)

# 查看结果
formatted_df.show(truncate=False)

注意点:

  • 格式字符串里的yyyy代表常规公历年份,而YYYY是基于周的年份(比如某些跨年的周会归属到下一年的周基年份),绝大多数业务场景下用yyyy就足够了,如果你有特殊的周基年份需求再替换成YYYY。
  • date_format函数还支持更多格式符,比如HH:mm:ss表示时分秒,非常灵活。

方法二:先转Date类型再转字符串(简洁高效)

如果你的需求只是提取Timestamp中的日期部分并转成'YYYY-MM-DD'字符串,这种方法更简洁:

代码示例:

from pyspark.sql import SparkSession
from pyspark.sql.functions import to_date

spark = SparkSession.builder.appName("TimestampToDateString").getOrCreate()

sample_data = [("2023-05-12 08:45:30",), ("2024-03-20 16:20:00",)]
df = spark.createDataFrame(sample_data, ["original_timestamp"])

# 先将Timestamp转为Date类型,再强制转换为字符串
formatted_df = df.withColumn(
    "date_string", 
    to_date("original_timestamp").cast("string")
)

formatted_df.show(truncate=False)

原理:

to_date函数会自动截断Timestamp的时分秒部分,只保留日期信息;而Date类型转成字符串时,默认就是'yyyy-MM-dd'的格式,刚好符合你的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:26:41