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

Quels paramètres fournissent le format datetime par défaut de SQL Server ?

Ne fais pas ça ! N'utilisez pas de chaînes au lieu de dates et n'utilisez pas de format de date ou de date-heure spécifique à la culture, c'est une recette pour un désastre.

SQL Server n'a pas de "format de date", juste les formats qu'il utilise pour convertir les dates vers et depuis les chaînes. L'un d'eux est la valeur par défaut, contrôlée par le classement du serveur. Vous ne pouvez ni supposer ni dépendre d'un classement spécifique, vous devez donc éviter les conversions dans la mesure du possible. De plus, la transmission d'une valeur de chaîne peut empêcher SQL Server d'utiliser des index sur les colonnes de date, car il devrait convertir la chaîne en type de colonne sous-jacent.

Il est beaucoup plus facile et plus sûr de transmettre des dates en tant que variables ou paramètres de type date. Vous évitez ainsi tout le gâchis de conversion, vers et depuis et évitez les attaques par injection SQL.

Il n'y a aucune raison de transmettre des chaînes au lieu de dates au serveur. Tous les clients SQL Server (y compris ADO.NET) vous permettent d'exécuter des requêtes paramétrées. Les ORM comme NHibernate et Entity Framework génèrent également des requêtes paramétrées pour les colonnes de type date.

Chaque fois que vous devez créer un littéral de chaîne, utilisez l'un des formats invariants comme 20140913 ou 2012-11-07T18:26:20

Vous pouvez en savoir plus à ce sujet sur Rédaction d'instructions T-SQL internationales