2010-07-07 4 views
5

Je veux obtenir une date complèteComment ajouter Hours, mins, seconds à dateadd sql?

Donc, aujourd'hui, serait 7/7/2010 12:00:00 h à 7/7/2010 23:59:59

ce qui devrait être pleinement 24 heures depuis 12:00:00 serait le 8 alors.

J'ai donc ce

select DATEADD(??, ??, DATEDIFF(dd, 0, GETUTCDATE())) 

Comment puis-je faire ajouter 23 heures 59mins et 59 secondes à elle?

Répondre

5
DECLARE @start DATETIME 
DECLARE @end DATETIME 

SET @start = DATEADD(dd, 0, DATEDIFF(dd, 0, GETUTCDATE())) 
SET @end = DATEADD(dd, 1, DATEADD(ms, -3, @start)) 
+0

Est-ce mieux? Rencontrera-t-il cette condition de concurrence? – chobo2

+0

@ chobo2: Ceci calcule '@ end' par rapport à' @ start' plutôt qu'en appelant 'GETUTCDATE()' Dans le cas (improbable) où la date coïncide au-dessus de minuit entre les deux déclarations, la plage sera toujours un seul jour. – LukeH

3

Essayez ceci:

DATEADD(second, -1, DATEADD(DAY, 1,"7/7/2010 12:00:00"))

+0

Hmm je ne peux pas avoir du mal codé bien sûr. Donc j'ai pris ce que vous aviez et fait cela cela semble fonctionner mais là encore je ne sais pas ce que j'ai vraiment fait DATEADD (dd, 0, DATEDIFF (dd, 0, GETUTCDATE())) ET DATEADD (ss, -1 , DATEDIFF (dd, -1, GETUTCDATE()) – chobo2

+0

@ chobo2: Il y a une petite chance de condition de course avec le code dans votre commentaire - si la date coïncide sur minuit entre la première déclaration et la seconde, alors vous finirez par avec une plage qui couvre deux jours plutôt qu'un seul – LukeH

Questions connexes