我有一个包含以下列的数据集
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