我有一个包含以下列的数据集
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'))
但是,我没有成功将其更改为日期时间或时间戳。
有功能可以帮助我吗?
谢谢
答案 0 :(得分:1)
使用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;
如上所述,我不认识Presto。您甚至可能必须先将日期转换为时间戳:
cast(date as timestamp) +
...
答案 1 :(得分:1)
您可以使用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)
答案 2 :(得分:0)
您可以在下面使用以便转换为时间戳
select *,
cast(date_col as timestamp) as ts
from T