我使用sql.functions.unix_timestamp
成功转换为spark中日期(y-m-d,yyyyMMdd等)的数字格式的时间戳。
问题是当日期使用一个月或一天的缩写名称时,例如
1991-Aug-09 Fri
有没有办法只使用原生火花功能来实现转换?
(免责声明:我知道我可以使用python函数来实现它,只是好奇心)
答案 0 :(得分:3)
您可以使用(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|
+--------------------------------------------+