时间戳在Spark中原生缩写日期格式

时间:2017-08-25 09:27:36

标签: apache-spark pyspark pyspark-sql

我使用sql.functions.unix_timestamp成功转换为spark中日期(y-m-d,yyyyMMdd等)的数字格式的时间戳。

问题是当日期使用一个月或一天的缩写名称时,例如 1991-Aug-09 Fri

有没有办法只使用原生火花功能来实现转换?

免责声明:我知道我可以使用python函数来实现它,只是好奇心)

1 个答案:

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