【问题标题】:Converting string with nano seconds to timestamp将带有纳秒的字符串转换为时间戳
【发布时间】:2019-05-28 23:23:33
【问题描述】:

我正在尝试将 String 数据类型转换为 Timestamp 数据类型,但结果却是 NONE

示例数据和代码

20181016T192403.635918+02:00

date_format = "yyyyMMdd'T'HHmmss.SSSSSSZ”
data_frame = data_frame.withColumn('dob_ts', unix_timestamp('dob', date_format).cast(‘timestamp’)

其他格式 (yyyyMMdd'T'HHmmss.SSS) 工作正常,但不是这个。
如何将此格式转换为时间戳?

【问题讨论】:

    标签: apache-spark pyspark timestamp unix-timestamp


    【解决方案1】:

    您可以使用udf 来定义您的功能。因此,在用户定义的函数中,您可以通过 if 或您想要的方式处理这种情况:

    from pyspark.sql.functions import udf 
    from datetime import datetime
    from pyspark.sql.types import TimestampType
    
    def date_time_to_date(input_date_time):
         split_ind = input_date_time.find('T')
         new_date = input_date_time
         if split_ind > -1:
             new_date = input_date_time[:split_ind] + input_date_time[split_ind + 1:]
         return datetime.strptime(input_date_time, '%Y%m%d %H%M%S.%f')
    
    udf_date_time_to_date = udf(new_date, TimestampType())
    
    data_frame = data_frame.withColumn('dob_ts', udf_date_time_to_date('dob'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-09
      • 2016-08-01
      • 2015-01-28
      • 2021-10-30
      • 1970-01-01
      • 2014-11-27
      • 2021-04-13
      相关资源
      最近更新 更多