Увеличение даты на интервал от разницы дат - Postgres - PullRequest
0 голосов
/ 07 марта 2020

Отредактировано: добавлена ​​информация о том, что date1 является отметкой времени

Мне нужно увеличить дату, но интервал основан на разнице между датой, которую я хочу увеличить, и другой датой в таблице, но с сохранением даты1 часа и минут. Например:

Create myTable
( id serial,
  date1 timestamp,
  date2 date
)

Итак, если date1 = '2020-01-10 10: 30: 00' и date2 = '2020-03-08' Мне нужно, чтобы date1 был '2020-03-08 10 : 30: 00 '

Update myTable set date1 = date1+interval (date2-date1)

Синтаксис требует одинарных кавычек между значением (то есть: дата + интервал «30 дней»). Как обернуть результат из (date2-date1) в одинарные кавычки? Я безуспешно пробовал много способов:

Update myTable set date1 = date1+interval chr(39)||cast((date2-date1) as varchar)|| ' days'|| chr(39)
Update myTable set date1 = date1+interval $$||cast((date2-date1) as varchar)|| ' days'||$$
Update myTable set date1 = date1+interval ''||cast((date2-date1) as varchar)|| ' days'||''

Как мне сделать это правильно?

1 Ответ

0 голосов
/ 08 марта 2020

То, что вы хотите, это установить часть даты date1 в date2 и оставить часть времени:

update myTable
set date1 = date2 + date1::time;

См. Демонстрационную версию .

...