有没有一种方法可以从varchar创建日期或时间戳输出列



我有一个包含以下列的数据集

time           date
1310        2020-06-01
1425        2020-06-22
1640        2020-06-29

我想要的最终输出是一个日期时间格式的列,看起来像

datetime
2020-06-01 13:10:00.000
2020-06-22 14:25:00.000
2020-06-29 16:40:00.000

到目前为止,我已经使用以下命令以我想要的方式格式化输出

CONCAT(date_string,  ' ', substring(barstarttime, 1, 2), ':', substring(barstarttime, 3, 2), ':00.000'))

然而,我并没有成功地将其更改为日期时间或时间戳。

有什么功能可以帮助我做到这一点吗?

感谢

使用SUBSTR从时间字符串中获取小时和分钟。然后将相应的间隔添加到日期中。

我不知道Presto是否允许函数用于区间值。请尝试:

select
date + 
interval substr(time, 1, 2) hour +
interval substr(time, 3, 2) minute
from mytable;

如果这不起作用,试试这个:

select
date + 
((interval '1' hour) * cast(substr(time, 1, 2) as integer)) +
((interval '1' minute) * cast(substr(time, 3, 2) as integer))
from mytable;

如前所述,我不认识普雷斯托。您甚至可能需要先将日期转换为时间戳:

cast(date as timestamp) +
...

您可以使用date_parse函数。

select date_parse(cast(date as varchar) || ' ' || time, '%Y-%m-%d %H%i') from 
(values ('1300', date '2020-06-01')) as t(time, date)

您可以使用以下内容转换为时间戳

select *,
cast(date_col as timestamp) as ts
from T

相关内容

  • 没有找到相关文章

最新更新