Postgresql обновляет столбец даты из 2 столбцов даты - PullRequest
0 голосов
/ 07 ноября 2018

Допустим, у меня есть таблица с именем baking_events и в ней есть поля start_date и end_date. Теперь я решил, что хотел бы воспользоваться всеми хорошими операторами диапазона, поэтому я добавляю в таблицу новый столбец daterange с именем duration.

Я бы хотел выполнить запрос для обновления duration в моей таблице baking_events, чтобы он равнялся [start_date, end_date] для каждой записи, прежде чем удалять столбцы start_date и end_date.

Есть ли способ сделать это в postgres, не просматривая каждую отдельную запись? Что-то вроде: UPDATE TABLE baking_events SET duration = [start_date, end_date]::daterange (этот запрос, очевидно, не работает, но должен дать вам представление о том, что я хочу сделать).

1 Ответ

0 голосов
/ 07 ноября 2018

Использовать конструктор даты :

select daterange('2018-01-01', '2018-12-31', '[]');

        daterange        
-------------------------
 [2018-01-01,2019-01-01)
(1 row) 

Хотя здесь указано '[]', на дисплее значение будет преобразовано в каноническую форму, поскольку daterange - это тип дискретного диапазона .

Команда обновления может выглядеть так:

UPDATE baking_events 
SET duration = daterange(start_date, end_date, '[]');

Обратите внимание, что после добавления и обновления нового столбца таблица не нормализована , вам следует рассмотреть возможность удаления столбцов start_date и end_date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...