首页 > 解决方案 > 在 spark scala 中将 CDT 时间戳转换为 UTC 格式

问题描述

我的数据框 myDF 如下所示 -

DATE_TIME
Wed Sep  6 15:24:27 CDT 2017
Wed Sep  6 15:30:05 CDT 2017

格式的预期输出:

2017-09-06 15:24:27
2017-09-06 15:30:05

需要将 DATE_TIME 时间戳转换为 UTC。

在 databricks 笔记本中尝试了以下代码,但它不起作用。

%scala

val df = Seq(("Wed Sep  6 15:24:27 CDT 2017")).toDF("times")
df.withColumn("times2",date_format(to_timestamp('times,"ddd MMM dd hh:mm:ss CDT yyyy"),"yyyy-MM-dd HH:mm:ss")).show(false)

times                        | times2    
Wed Sep  6 15:24:27 CDT 2017 | null

标签: scaladataframeapache-sparkapache-spark-sql

解决方案


我认为我们需要wed从您的字符串中删除然后使用to_timestamp()函数。

Example:

df.show(false)
/*
+---------------------------+
|times                      |
+---------------------------+
|Wed Sep 6 15:24:27 CDT 2017|
+---------------------------+
*/

df.withColumn("times2",expr("""to_timestamp(substring(times,5,length(times)),"MMM d HH:mm:ss z yyyy")""")).
show(false)
/*
+---------------------------+-------------------+
|times                      |times2             |
+---------------------------+-------------------+
|Wed Sep 6 15:24:27 CDT 2017|2017-09-06 15:24:27|
+---------------------------+-------------------+
*/

推荐阅读