📜  pyspark 将 int 转换为日期 (1)

📅  最后修改于: 2023-12-03 14:45:52.764000             🧑  作者: Mango

Pyspark将Int转换为日期

在Pyspark中,将整数(Int)数据类型转换为日期是一种常见的需求。可以使用Pyspark的内置函数和模块来实现这个转换过程。下面是一些方法:

使用to_date函数

to_date函数用于将字符串或整数转换为日期格式。当整数表示日期时,需要先将其转换为字符串,然后再使用to_date函数将其转换为日期。

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

spark = SparkSession.builder.getOrCreate()

# 创建一个包含整数日期的DataFrame
data = [(20211101,), (20201130,), (20220115,)]
df = spark.createDataFrame(data, ['int_date'])

# 将整数转换为日期
df = df.withColumn('date', to_date(df.int_date.cast('string'), 'yyyyMMdd'))

df.show()

输出结果:

+--------+----------+
|int_date|      date|
+--------+----------+
|20211101|2021-11-01|
|20201130|2020-11-30|
|20220115|2022-01-15|
+--------+----------+

这里,to_date函数将整数日期格式化为'yyyyMMdd'的字符串,并将其转换为日期格式。

使用from_unixtime函数

如果整数表示的是时间戳,可以使用from_unixtime函数将其转换为日期格式。

from pyspark.sql.functions import from_unixtime

# 创建一个包含整数时间戳的DataFrame
data = [(1638400000,), (1601443200,), (1642214400,)]
df = spark.createDataFrame(data, ['int_timestamp'])

# 将整数时间戳转换为日期
df = df.withColumn('date', from_unixtime(df.int_timestamp).cast('date'))

df.show()

输出结果:

+-------------+----------+
|int_timestamp|      date|
+-------------+----------+
|   1638400000|2021-12-03|
|   1601443200|2020-09-30|
|   1642214400|2022-01-15|
+-------------+----------+

这里,from_unixtime函数将整数时间戳转换为日期,并使用cast函数将其转换为日期类型。

以上是在Pyspark中将整数转换为日期的两种方法。根据具体的需求场景,选择适合的方法进行转换即可。