使用 Spark SQL 从 ISO 8601 解析日期时间

Parsing datetime from ISO 8601 using Spark SQL

想做 this 但恰恰相反。

我的 date 格式为 YYYY-MM-DDThh:mm:ss,我想要两列 YYYY-MM-DDhh:mm,如果需要,我可以针对某些查询进行连接.

我在使用 convert() 时遇到错误;我假设 Spark SQL 目前不支持此功能。

当我使用 date(datetime)timestamp(datetime) 时,我得到了所有返回的空值。但是,minute(datetime)hour(datetime) 有效。

目前,使用这个

concat(date,' ', hour,':', (case when minute < 10 then concat('0',minute) else minute end)) as DateTime
from (select OtherDateOnlyColumn as date, minute(datetime) as minute, hour(datetime) as hour from ...)

这显然效率不高。

我刚刚在这个查询中尝试使用 date() 并且它有效:

select date(datetime) from df

可能你table中的日期是字符串类型;您应该使用

检查列的数据类型
DESCRIBE your_table

如果日期是字符串类型,您可以使用 Spark SQL 中可用的 cast(datetime as timestamp) as newTimestamp 将日期时间转换回时间戳类型,并从那里使用 date_format(newTimestamp, 'YYYY-MM-dd hh:mm') 的变体。

简单的回答。在 Spark SQL.

中使用日期函数

ISO 8601 日期格式示例:

2017-05-12T00:00:00.000Z

select date(datetime) as parsed_date from table