sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta comparando fechas en SQL

En lugar de '2013-04-12' cuyo significado depende de la cultura local, use '20130412' que se reconoce como el formato invariable de la cultura.

Si desea comparar con el 4 de diciembre, debe escribir '20131204'. Si desea comparar con el 12 de abril, debe escribir '20130412'.

El artículo Escribir declaraciones internacionales de Transact-SQL de la documentación de SQL Server explica cómo escribir declaraciones que son invariantes de la cultura:

Las aplicaciones que usan otras API, o secuencias de comandos Transact-SQL, procedimientos almacenados y disparadores, deben usar cadenas numéricas no separadas. Por ejemplo, aaaammdd como 19980924.

EDITAR

Dado que está utilizando ADO, la mejor opción es parametrizar la consulta y pasar el valor de la fecha como un parámetro de fecha. De esta manera, evita por completo el problema del formato y también obtiene los beneficios de rendimiento de las consultas parametrizadas.

ACTUALIZAR

Para utilizar el formato ISO 8601 en un literal, se deben especificar todos los elementos. Para citar de la sección ISO 8601 de la documentación de datetime

Para usar el formato ISO 8601, debe especificar cada elemento en el formato. Esto también incluye la T, los dos puntos (:) y el punto (.) que se muestran en el formato.

... la fracción del segundo componente es opcional. El componente de tiempo se especifica en el formato de 24 horas.