Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Quali impostazioni forniscono il formato datetime predefinito di SQL Server?

Non farlo! Non utilizzare stringhe al posto delle date e non utilizzare un formato data o data/ora specifico per le impostazioni cultura, è una ricetta per il disastro.

SQL Server non ha un "formato data", solo i formati che usa per convertire le date da e verso le stringhe. Uno di questi è l'impostazione predefinita, controllata dalle regole di confronto del server. Non puoi né presumere né dovresti dipendere da una specifica confronto, quindi dovresti evitare le conversioni quando possibile. Inoltre, il passaggio di un valore stringa può impedire a SQL ServerSQL Server di utilizzare gli indici nelle colonne della data perché dovrebbe convertire la stringa nel tipo di colonna sottostante.

È molto più semplice e sicuro passare le date come variabili o parametri di tipo data. In questo modo eviti l'intero pasticcio di conversione, da e verso ed eviti attacchi di SQL injection.

Non c'è motivo di passare stringhe invece di date al server. Tutti i client di SQL Server (incluso ADO.NET) consentono di eseguire query con parametri. ORM come NHibernate ed Entity Framework generano anche query parametrizzate per colonne con data.

Ogni volta che devi creare una stringa letterale, usa uno dei formati invarianti come 20140913 o 2012-11-07T18:26:20

Puoi saperne di più su Scrittura di istruzioni T-SQL internazionali