Я работаю над приложением, которое имеет дело с периодическими платежами
Платежи осуществляются каждые две недели, т.е.
- оплата 1: 2009-06-01
- платеж 2: 2009-06-15
- платеж 3: 2009-06-29
и теперь мне нужен оператор SQL, который может вычислить ближайшую дату следующего платежа из заданной даты в предложении WHERE
т.е.
ВЫБРАТЬ ... ОТ ... ГДЕ someDate <<em> [РАССЧИТАТЬ СЛЕДУЮЩУЮ ДАТУ ВЫПЛАТЫ ИЗ ДАННОЙ ДАТЫ]
Если бы я делал это в C #, я бы пошел
static DateTime CalculateNextPayDateFrom(DateTime fromDate)
{
var firstEverPayment = new DateTime(2009, 6, 1);
var nextPayment = firstEverPayment;
while (nextPayment < fromDate)
{
nextPayment += new TimeSpan(14, 0, 0, 0);
}
return nextPayment;
}
Так что, если я сделаю
Console.WriteLine(CalculateNextPayDateFrom(new DateTime(2009, 6, 12)).ToString());
Console.WriteLine(CalculateNextPayDateFrom(new DateTime(2009, 6, 20)).ToString());
вывод будет
15/06/2009 12:00:00 a.m.
29/06/2009 12:00:00 a.m.
но я полностью застрял, когда мне нужно сделать это в SQL.
Кто-нибудь может мне помочь? Я использую SQL Server 2005
UPDATE:
Кстати, я забыл упомянуть, что последняя дата платежа не доступна в базе данных, она должна быть рассчитана во время выполнения.