Неожиданная дата при преобразовании строки в метку времени в pyspark - PullRequest
0 голосов
/ 22 января 2020

Следующий пример:

import pyspark.sql.functions as F

df = sqlContext.createDataFrame([('Feb 4 1997 10:30:00',), ('Jan 14 2000 13:33:00',), ('Jan 13 2020 01:20:12',)], ['t'])
ts_format = "MMM dd YYYY HH:mm:ss"

df.select(df.t, 
          F.to_timestamp(df.t, ts_format),  
          F.date_format(F.current_timestamp(), ts_format))\
  .show(truncate=False)

Выходы:

+--------------------+-----------------------------------------+------------------------------------------------------+
|t                   |to_timestamp(`t`, 'MMM dd YYYY HH:mm:ss')|date_format(current_timestamp(), MMM dd YYYY HH:mm:ss)|
+--------------------+-----------------------------------------+------------------------------------------------------+
|Feb 4 1997 10:30:00 |1996-12-29 10:30:00                      |Jan 22 2020 14:38:28                                  |
|Jan 14 2000 13:33:00|1999-12-26 13:33:00                      |Jan 22 2020 14:38:28                                  |
|Jan 22 2020 14:29:12|2019-12-29 14:29:12                      |Jan 22 2020 14:38:28                                  |
+--------------------+-----------------------------------------+------------------------------------------------------+

Вопрос: Преобразование current_timestamp () в строку работает с заданным форматом. Почему другой способ (String to Timestamp) не работает?

Примечания: pyspark 2.4.4, документы указывают на simpleDateFormat pattern

1 Ответ

0 голосов
/ 22 января 2020

Изменение формата года на строчные буквы устранило проблему

ts_format = "MMM dd yyyy HH:mm:ss"
...