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
因此,如果您只想获得毫秒,那么您只需像现在一样将秒转换为毫秒。
我有以下日期数据框,
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
因此,如果您只想获得毫秒,那么您只需像现在一样将秒转换为毫秒。