如何修改spark sql中DDMMMYYYY HH:mm:ss:ssssss格式的时间戳为yyyy-MM-dd格式.&



我有一个如下格式的时间戳。如何从它得到日期在yyyy-MM-dd格式?

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

我已经尝试使用下面的,但得到null。

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

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

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

只需要使用合适的日期掩码,它似乎是:

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|
+-----------------------------------------------------------------+

最新更新