DELETE from Table WHERE Date > GETDATE();
GETDATE () inclut le temps. Au lieu de recevoir
2011-01-26 14:58:21.637
Comment puis-je avoir:
2011-01-26 00:00:00.000
Léger biais vers SQL Server
Sommaire
DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
SQL Server 2008 a cependant date
type. Alors juste utiliser
CAST(GETDATE() AS DATE)
Edit: Pour ajouter un jour, comparez au jour précédant "zéro"
DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)
De cyberkiwi:
Une alternative qui ne comporte pas 2 fonctions est (le +1 peut être entre ou entre parenthèses).
DATEDIFF(DAY, 0, GETDATE() +1)
DateDiff
retourne un nombre, mais à toutes fins utiles, cela fonctionnera comme une date où vous avez l'intention d'utiliser cette expression, à l'exception de la convertir directement en VARCHAR. Dans ce cas, vous auriez utilisé l'approche CONVERT directement dans GETDATE (), par exemple.
convert(varchar, GETDATE() +1, 102)
Pour SQL Server 2008, la méthode la plus simple et la mieux adaptée aux index est la suivante:
DELETE from Table WHERE Date > CAST(GETDATE() as DATE);
Pour les versions antérieures de SQL Server, les calculs de date seront plus rapides que ceux convertis en varchar. Même la conversion en varchar peut vous donner un résultat erroné, à cause des paramètres régionaux.
DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());
Remarque: il n’est pas nécessaire d’envelopper le DATEDIFF
avec un autre DATEADD
C'est spécifique à la base de données. Vous n'avez pas spécifié le moteur de base de données que vous utilisez.
par exemple. dans PostgreSQL, vous lancez (valeur comme date).
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
Vous pouvez utiliser
DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);