2016-08-23 126 views
1

想要做this但反过来。使用Spark SQL从ISO 8601解析datetime

我的date s是这种格式YYYY-MM-DDThh:mm:ss,我想要两个列YYYY-MM-DDhh: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 ...) 

这显然是效率不高。

回答

0

我只是想用日期()在此查询和它的作品:

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')变种从那里。