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))