如何将 DDMMMYYYY HH:mm:ss:ssssss 格式的时间戳更改为 spark sql 中的 yyyy-MM-dd 格式 [重复]

Posted

技术标签:

【中文标题】如何将 DDMMMYYYY HH:mm:ss:ssssss 格式的时间戳更改为 spark sql 中的 yyyy-MM-dd 格式 [重复]【英文标题】:How to Change Timestamp in DDMMMYYYY HH:mm:ss:ssssss format to yyyy-MM-dd format in spark sql [duplicate] 【发布时间】:2021-08-09 10:46:38 【问题描述】:

我有以下格式的时间戳。如何从中获取 yyyy-MM-dd 格式的日期?

+-------------------------+
|15APR2021:03:53:54.458387|
|15APR2021:03:53:53.830339|
|15APR2021:03:53:54.297856|
+-------------------------+

我已尝试使用以下内容,但结果为空。

scala> spark.sql("select to_date('15APR2021:03:53:54.297856')").show()
+------------------------------------+
|to_date('15APR2021:03:53:54.297856')|
+------------------------------------+
|                                null|
+------------------------------------+

【问题讨论】:

【参考方案1】:

这应该适合你。如果时间是 24Hr 格式,则将 hh 更改为 HH。

spark.sql("select to_date('15APR2021:03:53:54.458387', 'ddMMMyyyy:hh:mm:ss')").show()

【讨论】:

【参考方案2】:

只需要使用正确的日期掩码即可:

ddMMMyyyy:HH:mm:ss.SSSSSS

这是一个假设时间戳位于名为 ts 的列中的示例

df.withColumn("date", to_date($"ts", "ddMMMyyyy:HH:mm:ss.SSSSSS")).show(false)

+-------------------------+----------+
|ts                       |date      |
+-------------------------+----------+
|15APR2021:03:53:54.458387|2021-04-15|
|15APR2021:03:53:53.830339|2021-04-15|
|15APR2021:03:53:54.297856|2021-04-15|
+-------------------------+----------+

或者使用您示例中的语法:

spark.sql("select to_date('15APR2021:03:53:54.458387', 'ddMMMyyyy:hh:mm:ss.SSSSSS')").show()

+-----------------------------------------------------------------+
|to_date('15APR2021:03:53:54.458387', 'ddMMMyyyy:hh:mm:ss.SSSSSS')|
+-----------------------------------------------------------------+
|                                                       2021-04-15|
+-----------------------------------------------------------------+

【讨论】:

感谢您的帮助。但是,它仍然给我null。我正在使用火花版本 2.3。可能这就是为什么它不适合我。

以上是关于如何将 DDMMMYYYY HH:mm:ss:ssssss 格式的时间戳更改为 spark sql 中的 yyyy-MM-dd 格式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Logcat 中显示的时间

使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳

从Datatable到textBox的格式化时间总和

如何将 DDMMMYYYY HH:mm:ss:ssssss 格式的时间戳更改为 spark sql 中的 yyyy-MM-dd 格式 [重复]

java转换ddMMMyyyy 格式的日期(12MAY2018)月三个字母

PHPExcel 日期格式