Dans SQL Server 2005, comment obtenir la date actuelle sans la partie heure? Je l'utilise GETDATE()
mais je voudrais qu'il soit mis 00: 00: 00.0
Dans SQL Server 2005, comment obtenir la date actuelle sans la partie heure? Je l'utilise GETDATE()
mais je voudrais qu'il soit mis 00: 00: 00.0
Réponses:
Le plus rapide si vous devez parcourir un jeu d'enregistrements et que vous n'avez pas de date dans SQL Server 2008
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Deux réponses différentes et excellentes sur StackOverflow en témoignent: Un , Deux
Les conversions Varchar sont l’un des pires moyens de le faire. Bien sûr, pour une valeur, cela n'a peut-être pas d'importance, mais c'est une bonne habitude à prendre.
Cette méthode est également déterministe, par exemple si vous souhaitez indexer une colonne calculée. Même les personnes qui écrivent des livres sur SQL Server se font surprendre par des conversions datetime
Cette technique est également extensible.
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
Modifier:
Comme je l'ai mentionné à propos du déterminisme, les méthodes varchar ne sont sécurisées que si vous utilisez le style 112.
D'autres réponses soulignent que vous ne l'appliqueriez jamais à une colonne. Ceci est correct, mais vous pouvez sélectionner 100 000 lignes ou ajouter une colonne calculée ou GROUP BY dateonly. Ensuite, vous devez utiliser cette méthode.
L’autre réponse mentionne également le style 110. Ce n’est pas une langue ni SET SET DATEFORMAT sûr et échoue avec le réglage de la langue "britannique". Voir le guide ultime des types de données datetime de Tibor Karaszi.