Исправление времени в формате PostgreSQL - PullRequest
0 голосов
/ 21 октября 2011

Я работаю со сторонними данными, которые мне нужно загрузить в мою базу данных postgresql.Я сталкиваюсь с проблемами, когда иногда получаю время «24: 00: 30», тогда как на самом деле должно быть «00: 00: 30».Это отклоняет данные.

Я пытался привести, но это не сработало.

insert into stop_times_test trip_id, cast(arrival_time as time), feed_id, status
from   external_source;

Есть ли какой-нибудь способ преобразовать его в правильный?

Ответы [ 3 ]

3 голосов
/ 21 октября 2011

Это может работать для вашего случая:

> select '0:0:0'::time + '24:00:30'::interval;
00:00:30
1 голос
/ 21 октября 2011

Приведение к интервалу, затем приведение к времени:

SELECT '24:00:30'::interval::time

Если вы хотите выполнить массовую загрузку данных с помощью COPY или массой INSERT, задайте тип данных целевого столбца interval и позже преобразовайте его в time. Это работает из коробки:

ALTER TABLE mytable ALTER col1 TYPE time;
0 голосов
/ 21 октября 2011

Нет, волшебного способа сделать это не существует. Ни один актерский состав не поможет вам. 24:00:30 неверное время. Период.

Вы можете попробовать добавить это значение в varchar, а затем использовать регулярные выражения, чтобы обновить правильные значения и вставить их в нужные столбцы. Такого рода вещи случаются много при выполнении преобразования данных.

...