#sql-server-2005 #sql-server-2008
#sql-server-2005 #sql-server-2008
Вопрос:
Мне нужно вычислить средние дни в пределах указанных значений datetime в sql server, которые включают логический день (hh mm ss mi) в качестве среднего времени (дней). кто-нибудь может мне помочь?
заранее спасибо…
Комментарии:
1. извините, здесь еще рано, и я еще не пил кофе. Можете ли вы предоставить более подробную информацию? Что вы подразумеваете под средними днями в пределах значений datetime? Существует ли диапазон дат?
2. о .. доброе утро… На самом деле мне нужно рассчитать среднее количество дней для диапазона значений datetime, которые должны быть заданы. скажем, например, рассмотрим два столбца datetime как @startdatetime и @enddatetime.ex:@startdatetime = ‘2008-09-03 10:00:00.000’ и @enddatetime = ‘2008-09-03 11:05:05.005’. Я хочу вычислить общее количество дней в этом диапазоне значений datetime. например, 2.5 и бла-бла-бла…
Ответ №1:
Вы можете использовать функцию datediff:
SELECT DATEDIFF(day, startdate, enddate)
FROM myTable
Это даст вам количество дней между двумя датами.
Вы можете получить среднее значение с помощью функции AVG:
SELECT AVG(DATEDIFF(day, startdate, enddate))
FROM myTable
Ответ №2:
И на всякий случай, если ваша конечная дата может быть нулевой, попробуйте это
select case when (SubscriptionEnd is null)
then datediff (day,SubscriptionStart,getdate())
else datediff (day,SubscriptionStart,SubscriptionEnd)
end as 'totaldays'
from [dbo].[whatever]