在 pyspark 问题中转换 24 小时日期格式

Posted

技术标签:

【中文标题】在 pyspark 问题中转换 24 小时日期格式【英文标题】:converting 24 hrs date format in pyspark issue 【发布时间】:2020-08-26 16:09:06 【问题描述】:

我试图在 spark SQL 中将字符串格式数据类型转换为日期格式,下面是我用来隐藏的查询,但奇怪的是它适用于 12 小时格式而不是 24 小时格式(显示为空)

select from_unixtime(unix_timestamp('19-Aug-2020 10:05:40', 'dd-MMM-yyyy hh:mm:ss'), 'yyyy-MM-dd hh:mm:ss') as timestamp1,from_unixtime(unix_timestamp('19-Aug-2020 14:05:40', 'dd-MMM-yyyy hh:mm:ss'), 'yyyy-MM-dd hh:mm:ss') as timestamp2;

我在这里错过了什么吗??

提前致谢

【问题讨论】:

HH 不是 hh 24 小时 【参考方案1】:

这是HHhh 的测试。

spark.sql('''
    select 
        to_timestamp('19-Aug-2020 10:05:40', 'dd-MMM-yyyy hh:mm:ss') as timestamp11,
        to_timestamp('19-Aug-2020 10:05:40', 'dd-MMM-yyyy HH:mm:ss') as timestamp12,
        to_timestamp('19-Aug-2020 14:05:40', 'dd-MMM-yyyy hh:mm:ss') as timestamp21,
        to_timestamp('19-Aug-2020 14:05:40', 'dd-MMM-yyyy HH:mm:ss') as timestamp22
''').show()

+-------------------+-------------------+-----------+-------------------+
|        timestamp11|        timestamp12|timestamp21|        timestamp22|
+-------------------+-------------------+-----------+-------------------+
|2020-08-19 10:05:40|2020-08-19 10:05:40|       null|2020-08-19 14:05:40|
+-------------------+-------------------+-----------+-------------------+

【讨论】:

【参考方案2】:

我们可以使用splitby

Select date.split('-')[2]||'-'||case when length(date.split('-')[0]) = 1 then '0'||date.split('-')[0] else  date.split('-')[0] end  || case when length(date.split('-')[1]) = 1 then '0'||date.split('-')[1] else  date.split('-')[1] end] 
Date = date_column

日期格式yyyy-mm-dd 分隔符可以不同。

没有任何日期格式

【讨论】:

【参考方案3】:

我们可以使用下面的拆分创建自己的日期格式化程序

Select date.split('-')[2]||'-'||case when length(date.split('-')[0]) = 1 then '0'||date.split('-')[0] else  date.split('-')[0] end  || case when length(date.split('-')[1]) = 1 then '0'||date.split('-')[1] else  date.split('-')[1] end] 

日期 = date_column

日期格式yyyy-mm-dd 分隔符可以不同。

不使用任何日期格式函数

【讨论】:

以上是关于在 pyspark 问题中转换 24 小时日期格式的主要内容,如果未能解决你的问题,请参考以下文章

php 24小时格式的日期转换为12小时的日期

如何将 12 或 24 小时时间格式的日期转换为“互联网”日期?

swift - 如何将日期从上午/下午转换为 24 小时格式

c语言将秒数转换为时间格式(24小时制,00:00:00格式)

如何使用pyspark函数处理日期格式的T和Z

IOS- 时间格式转换问题(12小时和24小时的区别)