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

Interrogare le date di confronto in SQL

Invece di "2013-04-12" il cui significato dipende dalla cultura locale, usa "20130412" che è riconosciuto come il formato invariante della cultura.

Se vuoi confrontare con il 4 dicembre, dovresti scrivere "20131204". Se vuoi confrontare con il 12 aprile, dovresti scrivere "20130412".

L'articolo Scrivere istruzioni Transact-SQL internazionali dalla documentazione di SQL Server spiega come scrivere istruzioni invarianti delle impostazioni cultura:

Le applicazioni che utilizzano altre API o script Transact-SQL, stored procedure e trigger devono utilizzare le stringhe numeriche non separate. Ad esempio, aaaammgg come 19980924.

MODIFICA

Poiché si utilizza ADO, l'opzione migliore consiste nel parametrizzare la query e passare il valore della data come parametro della data. In questo modo eviti completamente il problema del formato e ottieni anche i vantaggi in termini di prestazioni delle query con parametri.

AGGIORNAMENTO

Per utilizzare il formato ISO 8601 in un valore letterale, è necessario specificare tutti gli elementi. Per citare dalla sezione ISO 8601 della documentazione di datetime

Per utilizzare il formato ISO 8601, è necessario specificare ogni elemento nel formato. Ciò include anche la T, i due punti (:) e il punto (.) visualizzati nel formato.

... la frazione di secondo componente è facoltativa. La componente dell'ora è specificata nel formato 24 ore.