TSQL DateDiff для возврата количества дней с двумя десятичными знаками - PullRequest
26 голосов
/ 02 марта 2012

Мне нужно сравнить 2 даты и вернуть количество дней между ними с двумя десятичными знаками.

Например:

при сравнении

SubmittedDate = 2012-02-29 07:02:55.000

FirstCall = 2012-02-29 12:12:19.000

Это разница в 5 часов. Так что я бы вернул 0,2 дня

Я пробовал:

CAST(DATEDIFF(Hour, SubmittedDate, FirstCall)/30.0 AS DECIMAL(5,2)) As HoursBeforeFirstCall
CAST(DATEDIFF(Day, SubmittedDate, FirstCall) AS DECIMAL(5,2)) As HoursBeforeFirstCall

Кажется, никто не работает.

Ответы [ 4 ]

41 голосов
/ 02 марта 2012

Вместо этого возьмите DateDiff в секундах, а затем разделите на 86400.0.Требуется десятичная точка.

7 голосов
/ 02 марта 2012

Когда вы представляете дату в виде числа, каждый день уже представлен 1,0 "единицей". Чтобы получить временную шкалу двух дат как десятичную, вы можете просто вычесть их.

SELECT CAST((@FirstCall - @SubmittedDate) AS NUMERIC(10, 2))
1 голос
/ 22 января 2014

Вот что я сделал:

ROUND(SUM(DATEDIFF(ss,StartDateTime,EndDateTime) / 60.0 / 60.0), 2)
1 голос
/ 02 марта 2012

Как насчет этого?

select convert(decimal(12,2),convert(decimal(12,2),datediff(second,'2012-02-29 07:02:55.000','2012-02-29 12:12:19.000'))/60/60/24)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...