Requête SQL dans SQL Server 2005 – Comparaison des dates

J'ai du mal à faire cette requête. Je veux comparer les dates dans ma requête, les dates de ma database sont dans ce format:
(MM / JJ / AAAA HH: MM: SS AM)
Je veux comparer cette date avec celle de demain, aujourd'hui plus une.
Mes questions sont:

Comment puis-je déclarer la date de demain sur le server SQL?
Comment allez-vous comparer ces deux dates?

Je vous remercie!! = D

EDIT: Les dates dans DB sont VarChar = S

déclare la date de demain: DATEADD(dd,1,getdate())

comparer les dates:

 WHERE column >= CONVERT(datetime, CONVERT(varchar, DATEADD(day, 1, GETDATE()), 102)) AND column < CONVERT(datetime, CONVERT(varchar, DATEADD(day, 2, GETDATE()), 102)) 

Suppose le type de données datetime pour les colonnes

 WHERE MyCol >= DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 1) AND MyCol < DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 2) 

Ceci (aaaa-mm-jj) supprime le composant de time pour tester de MyCol est demain

2009-10-06 00:00:00 <= MyCol <2009-10-07 00:00:00

Vous ne dépassez pas le time de MyCol: cela affectera les performances et interdira l'utilisation de l'index, etc.

Efficacité de supprimer le time de la question de datetime , ce qui explique pourquoi j'ai utilisé ce format et éviter les conversions de varchar …

Modifier:

Éviter les conversions implicites et la correspondance de strings

10/06/2009 <= MyCol <10/07/2009

 WHERE MyCol >= CONVERT(char(10), DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 1), 101) AND MyCol < CONVERT(char(10), DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 2), 101) 

Bien sûr, ça va échouer à la fin du mois de décembre …

Je pense que vos dates sont plus susceptibles d'être dans le datatype datetime de SQL Server, et que le format que vous donnez est juste la représentation de string par défaut.

Typiquement, j'utilise quelque chose comme:

 SELECT * FROM tbl WHERE datecol = CONVERT(datetime, CONVERT(varchar, DATEADD(day, 1, GETDATE()), 101)) 

Cependant, si vos dates d'heure include une heure, vous devez utiliser quelque chose comme ceci:

 SELECT * FROM tbl WHERE datecol >= CONVERT(datetime, CONVERT(varchar, DATEADD(day, 1, GETDATE()), 101)) AND datecol < CONVERT(datetime, CONVERT(varchar, DATEADD(day, 2, GETDATE()), 101)) 

Il existe d'autres astuces arithmétiques de date que vous pouvez utiliser. Il y a beaucoup de choses ici sur SO si vous cherchez des dates SQL

SQL Server vous permet de déclarer des variables

 DECLARE @TomorrowsDate DateTime 

Et vous pouvez le régler à la date et l'heure actuelles

 SET @TomorrowsDate = DATEADD (Day, 0, GETDATE()) 

Pour la date de demain (sans time)

 SET @TomorrowsDate = DATEADD (Day, 1, CONVERT (VARCHAR, GETDATE(), 101)) 

Pour l'utiliser dans une requête avec une colonne sans déclarer de variable

 SELECT Column1, Column2 FROM YourTableName WHERE DateColumn BETWEEN DATEADD (Day, 0, CONVERT (VARCHAR, GETDATE(), 101)) AND DATEADD (Day, 1, CONVERT (VARCHAR, GETDATE(), 101))