web-dev-qa-db-fra.com

Comment obtenir uniquement la date d'utilisation de MSSQL GetDate ()?

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
72
sooprise

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

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

9
RichardTheKiwi

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

7
FolksLord
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
5
JohnOpincar

Vous pouvez utiliser

DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
0
Shafeeq Koorimannil