如何在 Spark SQL 中将 int 值从 csv 转换为 datetime?

How to convert int value from csv to datetime in Spark SQL?

有这样的SparkSQL查询:

spark.sql("""SELECT date, delay, origin, destination 
FROM us_delay_flights_tbl 
WHERE delay > 120 AND ORIGIN = 'SFO' AND DESTINATION = 'ORD' 
ORDER by delay DESC""").show(10)

视图 us_delay_flights_tbl 是从下一个 csv 创建的:

date,delay,distance,origin,destination

01011245,6,602,ABE,ATL

01020600,-8,369,ABE,DTW

01021245,-2,602,ABE,ATL

01020605,-4,602,ABE,ATL

01031245,-4,602,ABE,ATL

01030605,0,602,ABE,ATL

如何将字段日期转换为下一种格式的日期:02-19 09:25 来自我的 sql 查询中的字符串 02190925?

现在,结果如下:

date delay origin destination
02190925 1638 SFO ORD
01031755 396 SFO ORD

我需要得到:

date delay origin destination
02-19 09:25 am 1638 SFO ORD
01-03 05:55 pm 396 SFO ORD

更新

我试过这段代码:

date_format(to_date(date, 'MMddHHmm'), 'MM-dd hh:mm a')

但是得到字符串 02190925 的下一个输出:

02-1912:00上午

也就是说,我浪费了时间。

to_date 将字符串转换为 date,这意味着所有“时间”部分 (hours/minutes/seconds) 都将丢失。您应该使用 to_timestamp function 而不是 to_date,如下所示:

date_format(to_timestamp(date, 'MMddHHmm'), 'MM-dd hh:mm a')