У меня есть таблица БД в SQL Server, которая содержит дату начала проекта.
На веб-странице статуса я хочу показать, сколько дней / недель / месяцев было выполнено проектом, в единицах в зависимости от продолжительности. Таким образом, до 21 дня я бы показывал дни, до 7 недель я бы показывал недели, в противном случае показывал бы завершенные месяцы. Поэтому я получаю значения дней, недель и месяцев, а затем могу использовать некоторый код, чтобы решить, какой из них отображать.
Предположим, что проект начнется 30 декабря 2010 года, и я проверяю сегодня (27 февраля 2011 года).
select datediff(d,'30 Dec 2010',getdate()) as days,
datediff(wk,'30 Dec 2010',getdate()) as weeks ,
datediff(m,'30 Dec 2010',getdate())as months
производит
days: 59 weeks: 9 months: 2
Но на самом деле разница составляет 8 целых недель, и происходит некоторое округление.
Я тоже пытался сделать это в ASP, получить начальную дату, а затем выполнить datediff (), но это не лучше.
Есть ли лучший способ?
спасибо