J'ai un tableau de commandes qui contient un ID de commande, une date de commande et une description de commande.
Je souhaite exécuter une requête de sélection qui capture toutes les commandes qui ont été créées au cours des deux derniers jours. donc la date actuelle moins deux jours. à partir du 14 décembre, je souhaite sélectionner toutes les commandes dont la date de commande est> 13 décembre. Cela doit utiliser une fonction Obtenir la date pour récupérer la date actuelle et moins les jours.
J'ai essayé:
select * from orders where orderdate > getdate() - 2
mais cela ne produit pas les bons résultats. Une idée est de savoir comment faire ça s'il vous plaît?
vous devriez essayer d'utiliser la fonction dateadd
select * from orders where orderdate > dateadd(dd,-1,cast(getdate() as date))
Maintenant, cela peut être exactement ce dont vous avez besoin, mais vous devez comprendre qu'en moulant à ce jour, nous supprimons la partie temporelle et revenons effectivement au début de la journée et un jour derrière (-1) donne le début d'hier.
Si vous voulez les commandes des deux derniers jours, utilisez DATEADD
pour ajouter des jours à la date du jour (dans votre cas -2 jours) puis utilisez DATEDIFF
pour comparer les deux jours:
SELECT * FROM orders
WHERE DATEDIFF(DAY, DATEADD(DAY, -2, GETDATE()), orderdate) > 0
Maintenant, en supposant que toutes les commandes ont des dates dans le passé et aucune dans le futur (ce qui devrait être le cas), vous pouvez simplement utiliser DATEDIFF
comme ceci:
SELECT * FROM orders
WHERE DATEDIFF(DAY, orderdate, GETDATE()) <= 2
Remarque: vous pouvez utiliser < 3
au lieu de <= 2
.
Essaye ça:
select * from orders where orderdate > cast(getdate() - 1 as date)
On dirait que dateadd et convert résoudront le problème.
select o.*
from orders o
where o.orderdate >= dateadd(day, -2, convert(date, getdate()))