【问题标题】:Pyspark: Convert bigint to timestamp with microsecondsPyspark:将 bigint 转换为以微秒为单位的时间戳
【发布时间】:2021-03-15 09:01:29
【问题描述】:

我想将bigint unix 时间戳转换为以下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

我怎样才能得到这个?

【问题讨论】:

    标签: python sql apache-spark pyspark apache-spark-sql


    【解决方案1】:

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

    spark.sql("select to_timestamp(1605509165022529/1e6) as ts").show(truncate=False)
    
    +--------------------------+
    |ts                        |
    +--------------------------+
    |2020-11-16 06:46:05.022529|
    +--------------------------+
    

    【讨论】:

      猜你喜欢
      • 2015-06-17
      • 2018-09-21
      • 2018-11-29
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      相关资源
      最近更新 更多