问题描述
SELECT `case_id` AS ID,`updt_dt` AS Update_date,`updt_tm` AS Update_time
FROM case_dly_snap
LIMIT 2"
我的df如下:
其中update_date
为日期格式,update_time
为字符串格式。
如何将其转换为日期+时间格式?
预期产量
解决方法
您可以尝试这种方法。
使用Hive Built-in Functions
格式update_time
和concat update_date
将其转换为timestamp
。
例如
val lstData = List((1,"2018-05-14","012230.627"),(2,"2018-05-15","070026.886"),(3,"2018-05-16","023525.669"))
val cols = Array("ID","update_date","update_time")
val dfTime = sc.parallelize(lstData).toDF(cols: _*)
dfTime.show()
dfTime.createOrReplaceTempView("df_time")
spark.sql(
"""SELECT ID,update_date,update_time,|to_utc_timestamp(concat_ws(' ',CAST(update_date AS STRING),concat_ws(':',substr(split(update_time,'\\.')[0],2),3,5,2))),'GMT') AS tms
|FROM df_time """.stripMargin)
.show()
+---+-----------+-----------+-------------------+
| ID|update_date|update_time| tms|
+---+-----------+-----------+-------------------+
| 1| 2018-05-14| 012230.627|2018-05-14 01:22:30|
| 2| 2018-05-15| 070026.886|2018-05-15 07:00:26|
| 3| 2018-05-16| 023525.669|2018-05-16 02:35:25|
+---+-----------+-----------+-------------------+