Есть ли способ создать выходной столбец даты или времени из varchar - PullRequest
0 голосов
/ 14 июля 2020

У меня есть набор данных со следующими столбцами

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

Однако мне не удалось изменить это на дату и время или метку времени.

Есть ли функция, которая может мне помочь сделать так?

Спасибо

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Получить часы и минуты из строки времени с помощью 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 голос
/ 15 июля 2020

Вы можете использовать функцию 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)
0 голосов
/ 14 июля 2020

Вы можете использовать ниже, чтобы преобразовать в метку времени

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