Apache spark Pyspark unix_在从datetime转换到unix time时对最后的零进行条带化的时间戳

Apache spark Pyspark unix_在从datetime转换到unix time时对最后的零进行条带化的时间戳,apache-spark,datetime,pyspark,unix-timestamp,Apache Spark,Datetime,Pyspark,Unix Timestamp,我有以下日期数据框 end_dt_time 2020-10-12 04:00:00 2020-10-11 04:00:00 2020-10-10 04:00:00 2020-10-09 04:00:00 2020-10-08 04:00:00 在将这些日期转换为unix时间戳时,尾随的零没有出现,这给了我在unix中不正确的时间 这就是我申请的: df = df.withColumn('unix', F.unix_timestamp('en_dt_time')) 输出缺少最后3个零(000)

我有以下日期数据框

end_dt_time
2020-10-12 04:00:00
2020-10-11 04:00:00
2020-10-10 04:00:00
2020-10-09 04:00:00
2020-10-08 04:00:00
在将这些日期转换为unix时间戳时,尾随的零没有出现,这给了我在unix中不正确的时间

这就是我申请的:

df = df.withColumn('unix', F.unix_timestamp('en_dt_time'))
输出缺少最后3个零(000)

所需输出为

en_dt_time          unix
2020-10-12 04:00:00 1602475200000
2020-10-11 04:00:00 1602388800000
2020-10-10 04:00:00 1602302400000
2020-10-09 04:00:00 1602216000000
2020-10-08 04:00:00 1602129600000
2020-10-07 04:00:00 1602043200000

如何在转换为unix时间戳时获得此精度? 我能够通过将输出乘以1000来生成这个

df = df.withColumn('unix', F.unix_timestamp('en_dt_time')*1000)

这是正确的方法吗?

这是正确的行为。从:

使用默认时区和默认区域设置,将具有给定模式的时间字符串(“yyyy-MM-dd HH:MM:ss”默认)转换为Unix时间戳(以秒为单位)


因此,如果你只想得到毫秒,那么你只需要像现在这样将秒转换为毫秒。

这是我知道的唯一方法。我经常遇到有纪元毫秒的地方,需要将其转换为时间戳。
df = df.withColumn('unix', F.unix_timestamp('en_dt_time')*1000)