У меня есть система, которая определяет повторяющиеся шаблоны дней. Каждый шаблон имеет базовую дату (часто несколько лет в прошлом, когда шаблон был создан) и число дней (которое повторяется), поэтому, например, он может определить шаблон для семидневного периода:
Таблица: Шаблон
ID | BaseDate | DayCount
-----------------------------
1 | 01/02/2005 | 7
Таблица: PatternDetail
PID | Offset | Detail
----------------------
1 | 0 | A
1 | 1 | B
1 | 2 | B
1 | 3 | C
etc.
(столбец сведений зависит от домена и не имеет значения.)
Я хочу, чтобы с учетом даты (скажем, сегодня) отработать правильное смещение в таблице PatternDetail для данного рабочего шаблона. В псевдокоде я бы сделал:
offset = ((today.InDays) - (Pattern.BaseDate.InDays)) % (Pattern.DayCount)
Как я могу сделать это в SQL (должен работать на MSSQL Server и Oracle)? Другими словами, как я могу рассчитать количество дней между двумя датами и взять модуль этой разницы?