使用Spark SQL从ISO 8601解析datetime
问题描述:
想要做this但反过来。使用Spark SQL从ISO 8601解析datetime
我的date
s是这种格式YYYY-MM-DDThh:mm:ss
,我想要两个列YYYY-MM-DD
和hh:mm
,我可以concat,如果我想,为某些查询。
使用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 ...)
这显然是效率不高。
答
我只是想用日期()在此查询和它的作品:
select date(datetime) from df
也许在你的表中的日期是字符串类型;你应该检查各列的数据类型与
DESCRIBE your_table
如果日期是字符串类型,你可以使用cast(datetime as timestamp) as newTimestamp
它可在Spark SQL到datetime转换回时间戳类型和使用的date_format(newTimestamp, 'YYYY-MM-dd hh:mm')
变种从那里。