如何在 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')
有这样的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')