首页 > 解决方案 > Pyspark:将 bigint 转换为以微秒为单位的时间戳

问题描述

我想将bigintunix 时间戳转换为以下datetime格式"yyyy-MM-dd HH:mm:ss:SSSSSS"以包含微秒。当我使用标准到日期时间功能时,我得到以下信息

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.

我怎样才能得到这个?

标签: pythonsqlapache-sparkpysparkapache-spark-sql

解决方案


将您的时间戳除以 1e6,因为to_timestamp需要一个以秒为单位的 unix 时间戳,而不是微秒。

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

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

推荐阅读