Следующее перестраивает строку в правильный формат для преобразования в метку времени.
with example as (
select '04.01.2019 07:06:48.607' as my_datestring
),
components as (
select
my_datestring,
substr(my_datestring,1,2) as m,
substr(my_datestring,4,2) as d,
substr(my_datestring,7,4) as yyyy,
substr(my_datestring,12,2) as hr,
substr(my_datestring,15,2) as min,
substr(my_datestring,18,2) as sec,
substr(my_datestring,21,3) as milli
from example
),
prep as (
select
my_datestring,
concat(yyyy,'-',m,'-',d,' ',hr,':',min,':',sec,'.',milli,'000 UTC') as fixed_datestring
from components
)
select my_datestring, fixed_datestring, cast(fixed_datestring as timestamp) as my_timestamp
from prep
*
Предполагается, что датой является 1 апреля (если 4 января, вам потребуется переключить m
и d
в components
CTE.
**
Также предполагается, чтовременная метка UTC, вам может потребоваться дополнительная настройка в зависимости от того, связаны ли ваши исходные данные с конкретным часовым поясом или если ваш окончательный вывод требует определенного часового пояса.
***
Вероятно, существует более умный способ разделения / переформатирования строки