web-dev-qa-db-fra.com

TSQL DateDiff pour renvoyer le nombre de jours avec 2 décimales

Je dois comparer deux dates et renvoyer le nombre de jours entre deux décimales.

Par exemple: 

en comparant

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

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

C'est une différence de 5 heures. Donc, je reviendrais 0,2 jour

J'ai essayé:

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

Aucun ne semble fonctionner.

25

Prenez plutôt DateDiff en secondes, puis divisez par 86400.0. Le point décimal est requis.

37
John Pick

Lorsque vous représentez une date sous forme de nombre, chaque jour est déjà représenté par 1.0 "unités". Pour obtenir la période de deux dates sous forme décimale, vous pouvez simplement les soustraire.

SELECT CAST((@FirstCall - @SubmittedDate) AS NUMERIC(10, 2))
5
JackAce

Que dis-tu de ça.

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)
1
Thit Lwin Oo

Voici ce que j'ai fait: 

ROUND(SUM(DATEDIFF(ss,StartDateTime,EndDateTime) / 60.0 / 60.0), 2)
0
Ispep Aloc