有没有办法从varchar创建日期或时间戳输出列

w8f9ii69  于 2021-07-26  发布在  Java
关注(0)|答案(3)|浏览(351)

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

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

我想要的最终输出是一个datetime格式的列

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'))

但是,我没有成功地将其更改为datetime或timestamp。
有没有一个函数可以帮助我这么做?
谢谢

6yt4nkrj

6yt4nkrj1#

从时间字符串中获取小时和分钟 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) +
  ...
ezykj2lf

ezykj2lf2#

您可以使用日期解析函数。

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

u1ehiz5o3#

您可以使用下面的命令来转换为时间戳

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

相关问题