Найдите значения даты и времени в тексте, а затем обновите другой столбец

В таблице postgresql у меня есть текстовый столбец, в котором даты хранятся следующим образом:

«Создано 2015-02-12 12:33:33»

или вот так:

«Создано Иваном 14.02.2015 14:03:42» или «Дата начала: 15.02.2015 08:44:08»

В тексте всего одна дата, но для некоторой строки вообще нет значения даты.

пример: «Создано Игорем»

Мне нужно найти эти значения даты и времени и обновить другой столбец метки времени с этими значениями.

Спасибо!


person Tkachenko    schedule 26.03.2017    source источник
comment
Всегда ли дата в формате ISO?   -  person a_horse_with_no_name    schedule 26.03.2017
comment
Да, дата всегда в одном формате, просто объединена со строками   -  person Tkachenko    schedule 26.03.2017


Ответы (1)


попробуй это:

Примечание: это будет работать только в том случае, если значения даты и времени всегда в формате, который вы разместили в вопросе.

UPDATE your_table SET
datetime_column = 
CASE 
WHEN text_column ~ '\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}' THEN regexp_replace(text_column, '.*(\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}).*', '\1')::TIMESTAMP
END
person Oto Shavadze    schedule 26.03.2017