SQL Server: comparer datetime jour avec GETDATE()
J'ai une procédure stockée qui doit extraire tous les enregistrements dont la date est égale à la date actuelle ou dans l'avenir.
Les dates sont enregistrées dans la colonne targetDate et formaté en datetime.
Mon correspondant, OÙ la clause est la suivante:
WHERE A.targetDate >= GETDATE()
En général ma procédure stockée fonctionne très bien, mon seul problème est que si le targetDate est égale à la date ainsi que toutes les dates sont enregistrés comme suit, c'est à dire à l'heure pour les zéros:
2014-02-22 00:00:00.000
Comment dois-je changer ma clause where de sorte qu'il ne considère que la date, mais ignore le gain de temps avec elle, de sorte que je reçois tous les enregistrements avec la date actuelle, même si l'heure est déjà passée ?
Merci beaucoup pour toute aide à ce sujet, Tim.
J'ai la version de SQL Server 2008
OriginalL'auteur user2571510 | 2014-02-22
Vous devez vous connecter pour publier un commentaire.
Changement:
Edit - parce que targetdate contient également du temps, oui, format à la fois comme ceci:
Édition - commentaires re: la performance, la pouvez essayer:
Dernière édition devrait vous donner le même résultat et profiter de tous les indices sur targetdate
Pas si c'est un champ de date. Est-il un timestamp ou un champ de date?
C'est un champ datetime mais l'entrée est toujours un jour seulement, c'est pourquoi il ajoute les zéros dans le temps comme dans l'exemple ci-dessus.
Essayez de casting que comme une date aussi. (voir edit)
Qui fonctionne parfait - merci beaucoup !
OriginalL'auteur Brian DeMilia
Ce qui suit devrait vous donner la date du jour avec un rien de temps:
Cela devrait être votre dernière ligne:
SELECT
est une erreur de syntaxe. Il n'y a pas besoin de la sous-requête, il suffit donc de retirer leSELECT
. Et le changementATEDIFF
pourDATEDIFF
😉Je vous remercie. C'était un copier/coller de l'erreur à partir de la ligne ci-dessus; je l'ai corrigé.
OriginalL'auteur Preli