Вычислить дату в Postgres, добавив месяцы? - PullRequest
7 голосов
/ 06 мая 2011

У меня есть таблица postgres со следующими полями

start_date, длительность

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

SELECT * 
FROM table 
WHERE start_date > '2010-05-12' 
AND (start_date + duration) < '2010-05-12'

Возможно ли это и как исправить синтаксис?

Версия моего postgres PostgreSQL 8.1.22 для x86_64-redhat-linux-gnu, скомпилирована GCC GCC (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)

Ответы [ 2 ]

17 голосов
/ 06 мая 2011

попробовать:

(start_date + (duration * '1 month'::INTERVAL)) < '2010-05-12'

или

(start_date + (duration || ' month')::INTERVAL) < '2010-05-12'

Дополнительная информация: Функции даты и времени и операторы

1 голос
/ 06 мая 2011

Эта статья может оказаться полезной: PostgreSQL: месяц: = интервал '30 дней ';

Также эта ссылка: http://wiki.postgresql.org/wiki/Working_with_Dates_and_Times_in_PostgreSQL,, более конкретно, раздел под названием «РАБОТА С ДАННЫМИ, ДАТАМИ И ИНТЕРВАЛ ЗНАЧЕНИЯМИ».

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