pyspark:用微秒将bigint转换为时间戳

iezvtpos  于 2021-05-16  发布在  Spark
关注(0)|答案(1)|浏览(609)

我想把一个 bigint unix时间戳 datetime 格式 "yyyy-MM-dd HH:mm:ss:SSSSSS" 包括微秒。当我使用标准的todatetime函数时,我得到如下结果

spark.sql("select to_timestamp(1605509165022529) as ts").show(truncate=False)

结果

+----------------------------+
|ts                          |
+----------------------------+
|22327-10-26 13:09:588.009408|
+----------------------------+

这个 datetime 这是错误的。日期应为2020-11-16,时间为 HH:mm:ss:SSSSSS .
我怎么能得到这个?

bfnvny8b

bfnvny8b1#

将时间戳除以1e6,因为 to_timestamp unix时间戳的单位应为秒,而不是微秒。

spark.sql("select to_timestamp(1605509165022529/1e6) as ts").show(truncate=False)

+--------------------------+
|ts                        |
+--------------------------+
|2020-11-16 06:46:05.022529|
+--------------------------+

相关问题