Как преобразовать строки даты в отметка времени, не зная формата даты

Я пытаюсь написать запрос для вставки значения в метку времени без поля типа данных часового пояса . Значение поступает из файла CSV.

Я работаю с версией PostgreSQL 8.1.21 .

Загрузка файла CSV выполняется клиентом, и в нем есть столбец даты. Дата иногда бывает в формате '28 -Sep-13 ', а иногда в формате '28.09.2013' .

Я попытался использовать следующее, чтобы преобразовать строку в метку времени: str_date :: timestamp .

Это работает нормально, если str_date представляет собой что-то вроде '28 -Sep-13 ', но это не сработает, если входящая дата имеет формат '28/09 / 2013 ', когда возникает эта ошибка:

 ОШИБКА: значение поля даты / времени вне диапазона: «28/09/2013» 
СОВЕТ: Возможно, вам нужен другой параметр «стиль даты» { {1}} 

Обычно клиент постоянно меняет формат даты в загруженном CSV-файле.
Есть ли способ преобразовать строки даты в метку времени в зависимости от ее фактического формата?

13
задан Erwin Brandstetter 9 April 2017 в 19:01
поделиться