Pyspark unix_timestamp从日期时间转换为unix时间时剥离最后的零

问题描述

我有以下日期数据框,

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

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

因此,如果您只想获取毫秒数,则只需将秒数转换为毫秒数即可。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...