Spark 中原生的时间戳缩写日期格式
Timestamp abbreviated date format natively in Spark
我正在使用 sql.functions.unix_timestamp
在 spark 中成功转换为日期的时间戳数字格式(y-m-d、yyyyMMdd 等)。
问题是当日期使用月份或日期的缩写名称时,例如
1991-Aug-09 Fri
有什么方法可以只使用原生spark函数来实现转换吗?
(免责声明: 我知道我可以使用 python 函数来完成,这只是好奇)
您可以使用 (reference - SimpleDateFormat)
yyyy-MMM-dd EEE
格式为 unix_timestamp
spark.sql("SELECT CAST(unix_timestamp('1991-Aug-09 Fri', 'yyyy-MMM-dd EEE') AS TIMESTAMP)").show()
+-------------------------------------------------------------------+
|CAST(unix_timestamp(1991-Aug-09 Fri, yyyy-MMM-dd EEE) AS TIMESTAMP)|
+-------------------------------------------------------------------+
| 1991-08-09 00:00:00|
+-------------------------------------------------------------------+
或to_date
/ to_timestamp
(Spark 2.2或更高版本):
spark.sql("SELECT to_date('1991-Aug-09 Fri', 'yyyy-MMM-dd EEE')").show()
+--------------------------------------------+
|to_date('1991-Aug-09 Fri', 'yyyy-MMM-dd EEE'|
+--------------------------------------------+
| 1991-08-09|
+--------------------------------------------+
我正在使用 sql.functions.unix_timestamp
在 spark 中成功转换为日期的时间戳数字格式(y-m-d、yyyyMMdd 等)。
问题是当日期使用月份或日期的缩写名称时,例如
1991-Aug-09 Fri
有什么方法可以只使用原生spark函数来实现转换吗?
(免责声明: 我知道我可以使用 python 函数来完成,这只是好奇)
您可以使用 (reference - SimpleDateFormat)
yyyy-MMM-dd EEE
格式为 unix_timestamp
spark.sql("SELECT CAST(unix_timestamp('1991-Aug-09 Fri', 'yyyy-MMM-dd EEE') AS TIMESTAMP)").show()
+-------------------------------------------------------------------+
|CAST(unix_timestamp(1991-Aug-09 Fri, yyyy-MMM-dd EEE) AS TIMESTAMP)|
+-------------------------------------------------------------------+
| 1991-08-09 00:00:00|
+-------------------------------------------------------------------+
或to_date
/ to_timestamp
(Spark 2.2或更高版本):
spark.sql("SELECT to_date('1991-Aug-09 Fri', 'yyyy-MMM-dd EEE')").show()
+--------------------------------------------+
|to_date('1991-Aug-09 Fri', 'yyyy-MMM-dd EEE'|
+--------------------------------------------+
| 1991-08-09|
+--------------------------------------------+