2010-12-08 32 views
2

Désolé pour la question paresseuse. Je veux connaître la syntaxe SQL Server 2005 pourdatetime serveur sql clause where

SELECT * 
    FROM myTable 
WHERE myDateTimeField > "4am this morning" 

Merci d'avance pour votre aide.

Répondre

3

Utilisation:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > DATEADD(hh, 4, DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)) 

Ce:

DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 

... retournera un DATETIME à minuit le jour en cours. Donc le DATEADD externe ajoute quatre heures à cette date à minuit pour vous donner un DATETIME à 4 heures ce matin.

Référence:

1

Essayez

SELECT * FROM myTable 
WHERE myDateTimeField > 
     DateAdd(hour, 4, DateAdd(day, DateDiff(day, 0, getdate()), 0)) 
+0

@omg, vous rapide –

1

Et juste pour être différent, et sans doute plus court/plus lisible que les autres offres:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > 
     cast(convert(varchar, getdate(), 101) + ' 4AM' as datetime) 

Bien sûr, vous ne voudrez peut-être pas vraiment coder en dur 4 heures, mais si vous le faites, cette façon est claire et évidente de transmettre votre intention.

+0

FYI: La méthode la plus rapide de troncation de date SQL Server consiste à utiliser l'approche DATEADD/DATEDIFF. –