如何将 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 格式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSDateFormatter 从 VBO 文件中解析日期/时间戳
如何将 DDMMMYYYY HH:mm:ss:ssssss 格式的时间戳更改为 spark sql 中的 yyyy-MM-dd 格式 [重复]