Comment puis-je obtenir juste la date en utilisant MSSQL GetDate()? [dupliquer]

cette question a déjà une réponse ici:

DELETE from Table WHERE Date > GETDATE();

GETDATE() includes time. Au lieu de

2011-01-26 14:58:21.637

Comment puis-je obtenir:

2011-01-26 00:00:00.000
59
demandé sur Ralph Willgoss 2011-01-26 23:59:03
la source

7 ответов

léger biais vers SQL Server

résumé

DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

SQL Server 2008 a le type date . Alors utilisez

CAST(GETDATE() AS DATE)

Modifier: pour en ajouter un jour, comparer à la veille de" zéro "

DATEADD(day, DATEDIFF(day, -1, GETDATE()), 0)

de cyberkiwi:

une alternative qui n'implique pas 2 fonctions est (le +1 peut être entre parenthèses).

DATEDIFF(DAY, 0, GETDATE() +1)

DateDiff retourne un nombre mais pour tous les buts cela fonctionnera comme une date partout où vous avez l'intention d'utiliser cette expression, sauf en la convertissant directement en VARCHAR - dans ce cas vous auriez utilisé L'approche convertir directement sur GETDATE (), par exemple

convert(varchar, GETDATE() +1, 102)
67
répondu gbn 2017-05-23 15:25:55
la source

Pour SQL Server 2008, le meilleur et l'index de manière conviviale est

DELETE from Table WHERE Date > CAST(GETDATE() as DATE);

pour les versions antérieures de SQL Server, les maths de date fonctionneront plus vite qu'un converti en varchar. Même la conversion en varchar peut vous donner le mauvais résultat, à cause des cadres régionaux.

DELETE from Table WHERE Date > DATEDIFF(d, 0, GETDATE());

Note: il n'est pas nécessaire d'envelopper le DATEDIFF d'un autre DATEADD

9
répondu RichardTheKiwi 2011-01-27 00:34:25
la source

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 ne cast(mavaleur que de la date).

7
répondu FolksLord 2011-02-06 16:06:18
la source
SELECT CONVERT(DATETIME, CONVERT(varchar(10), GETDATE(), 101))
5
répondu JohnOpincar 2011-01-27 00:03:22
la source

vous pouvez utiliser

DELETE from Table WHERE Date > CONVERT(VARCHAR, GETDATE(), 101);
0
répondu Shafeeq Koorimannil 2016-09-26 15:35:31
la source
CONVERT(varchar,GETDATE(),102)
-1
répondu Saggio 2011-01-27 00:02:57
la source

Autres questions sur