Представление дат, которые представляют собой определенное количество дней до или после другой даты в СУБД - PullRequest
1 голос
/ 03 августа 2011

Существует ли стандартный способ представления дат, которые представляют собой определенное количество дней до или после другой даты в СУБД?

Например, скажем, Дата 1 - 30 октября 2005 года, которая, очевидно, может храниться в столбце даты и времени или аналогично в RDB.

Но скажем, Дата 2 - это «3 дня после даты 1», как бы вы представили ее в RDB, предполагая, что Дата 1 может быть изменена в любое время в будущем, что означает, что Дата 2 должна будет каким-то образом автоматически обновляться?

Спасибо !!

1 Ответ

2 голосов
/ 03 августа 2011

Дайте 2 элемента информации, вы всегда можете отработать третью

  • Дата начала + Смещение = Другая дата
  • Другая Дата - Дата начала = Смещение

В этом случае у вас есть 2 известных факта

  • Дата начала
  • Смещение

Сохраните их и сделайте «Другая дата»вычисляемый столбец с DATEADD

CREATE TABLE whatever (
...
StartDate date NOT NULL,
DayOffset smallint NOT NULL,
AnotherDate AS DATEADD (day, DayOffset, StartDate),
...

Таким образом, AnotherDate будет поддерживаться механизмом базы данных при изменении 2 входных значений

Если любой из из 3 может изменитьсятогда вы обычно должны использовать триггер ...

...