我在用数据砖加载一些数据。数据中包含日期时间。日期时间字段的格式如下:2022-07-06 16:43:18.696 +0100我希望它是这样的格式:2022-07-06T16:43:18.8000000+00:0。我最终将数据转换为JSON,并将其输入到API中(我已经完成了),因此字段将被转换为字符串。我只是在使用pyspark将日期时间转换为所需格式时遇到了困难。API调用代码已完成,但出错,因为它期望datetime字段采用所需的格式。
2022-07-06 16:43:18.696 +0100
2022-07-06T16:43:18.8000000+00:0
ulmd4ohb1#
您需要使用to_utc_timestamp函数。
to_utc_timestamp
from pyspark.sql.functions import to_utc_timestamp, date_format df = [ {"Category": "A", "date": "2022-07-06 16:43:18.696 +0100", "Indictor": 1}, {"Category": "A", "date": "2022-07-06 16:43:18.696 +0200", "Indictor": 0}, {"Category": "A", "date": "2022-07-06 16:43:18.696 +0300", "Indictor": 1}, {"Category": "A", "date": "2022-07-06 16:43:18.696 +0400", "Indictor": 1}, {"Category": "A", "date": "2022-07-06 16:43:18.696 +0500", "Indictor": 1}, ] df = spark.createDataFrame(df) # Convert the datetime field to the desired format converted_data = df.withColumn( "date", date_format( to_utc_timestamp(df["date"], "GMT"), "yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'+00:0'" ), ) # Show the converted data converted_data.show(truncate=False)
结果
+--------+--------+--------------------------------+ |Category|Indictor|date | +--------+--------+--------------------------------+ |A |1 |2022-07-06T15:43:18.6960000+00:0| |A |0 |2022-07-06T14:43:18.6960000+00:0| |A |1 |2022-07-06T13:43:18.6960000+00:0| |A |1 |2022-07-06T12:43:18.6960000+00:0| |A |1 |2022-07-06T11:43:18.6960000+00:0| +--------+--------+--------------------------------+
还要注意,时间戳中的+0100意味着时区偏移。因此,它比UTC时间提前1小时。从您所需的格式中,您的API需要一个UTC时区。
+0100
1条答案
按热度按时间ulmd4ohb1#
您需要使用
to_utc_timestamp
函数。结果
还要注意,时间戳中的
+0100
意味着时区偏移。因此,它比UTC时间提前1小时。从您所需的格式中,您的API需要一个UTC时区。