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

PySpark中如何将Long类型值转换为yyyy-mm-dd日期格式

在PySpark中将Long类型时间戳转换为日期格式

你提供的数值1206946690是秒级时间戳,PySpark可以通过内置函数快速完成转换,以下是两种常用实现方式:

方法一:直接转换并格式化日期

使用from_unixtime()将秒级时间戳转为带时间的字符串,再通过date_format()提取yyyy-MM-dd格式的日期部分:

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

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

# 构造示例数据
sample_data = [(1206946690,)]
df = spark.createDataFrame(sample_data, ["timestamp_long"])

# 执行转换
df = df.withColumn("formatted_date", date_format(from_unixtime("timestamp_long"), "yyyy-MM-dd"))

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

执行后输出:

+--------------+-------------+
|timestamp_long|formatted_date|
+--------------+-------------+
|1206946690    |2008-03-31   |
+--------------+-------------+

方法二:先转Timestamp类型再提取日期

先将Long类型转换为Spark的TimestampType,再用to_date()直接获取日期:

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

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

sample_data = [(1206946690,)]
df = spark.createDataFrame(sample_data, ["timestamp_long"])

# 先转Timestamp,再提取日期
df = df.withColumn("timestamp", to_timestamp("timestamp_long")) \
       .withColumn("formatted_date", to_date("timestamp"))

df.show(truncate=False)

此方法输出结果与方法一完全一致,to_date()默认返回yyyy-MM-dd格式的日期字符串。

注意事项

如果你的时间戳是毫秒级(数值末尾带有3个0,比如1206946690000),需要先将数值除以1000再执行转换,示例:

df = df.withColumn("formatted_date", date_format(from_unixtime("timestamp_long"/1000), "yyyy-MM-dd"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:45:57