Pyspark unix_timestamp 在从日期时间转换为 unix 时间时去除最后的零

Pyspark unix_timestamp striping the last zeros while converting from datetime to unix time

我有以下日期数据框,

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 1602475200
2020-10-11 04:00:00 1602388800
2020-10-10 04:00:00 1602302400
2020-10-09 04:00:00 1602216000
2020-10-08 04:00:00 1602129600
2020-10-07 04:00:00 1602043200

所需的输出是

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)

这是正确的方法吗?

这是正确的行为。来自 function's description:

Convert time string with given pattern (‘yyyy-MM-dd HH:mm:ss’, by default) to Unix time stamp (in seconds), using the default timezone and the default locale

因此,如果您只想获得毫秒,那么您只需像现在一样将秒转换为毫秒。