Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Requête comparant des dates en SQL

Au lieu de '2013-04-12' dont la signification dépend de la culture locale, utilisez '20130412' qui est reconnu comme le format invariant de la culture.

Si vous voulez comparer avec le 4 décembre, vous devez écrire '20131204'. Si vous voulez comparer avec le 12 avril, vous devez écrire '20130412'.

L'article Write International Transact-SQL Statements de la documentation de SQL Server explique comment écrire des instructions invariantes à la culture :

Les applications qui utilisent d'autres API, ou des scripts Transact-SQL, des procédures stockées et des déclencheurs, doivent utiliser les chaînes numériques non séparées. Par exemple, aaaammjj sous la forme 19980924.

MODIFIER

Puisque vous utilisez ADO, la meilleure option consiste à paramétrer la requête et à transmettre la valeur de date en tant que paramètre de date. De cette façon, vous évitez complètement le problème de format et bénéficiez également des avantages de performances des requêtes paramétrées.

MISE À JOUR

Pour utiliser le format ISO 8601 dans un littéral, tous les éléments doivent être spécifiés. Pour citer la section ISO 8601 de la documentation de datetime

Pour utiliser le format ISO 8601, vous devez spécifier chaque élément du format. Cela inclut également le T, les deux-points (:) et le point (.) qui sont affichés dans le format.

... la fraction de seconde composante est facultative. Le composant horaire est spécifié au format 24 heures.