Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Consulta comparando datas no SQL


Em vez de '2013-04-12', cujo significado depende da cultura local, use '20130412', que é reconhecido como o formato invariável de cultura.

Se você quiser comparar com 4 de dezembro, deve escrever '20131204'. Se você quiser comparar com 12 de abril, deve escrever '20130412'.

O artigo Write International Transact-SQL Statements da documentação do SQL Server explica como escrever instruções que são invariantes de cultura:

Os aplicativos que usam outras APIs ou scripts Transact-SQL, procedimentos armazenados e gatilhos devem usar as strings numéricas não separadas. Por exemplo, aaaammdd como 19980924.

EDITAR

Como você está usando o ADO, a melhor opção é parametrizar a consulta e passar o valor da data como parâmetro de data. Dessa forma, você evita totalmente o problema do formato e também obtém os benefícios de desempenho das consultas parametrizadas.

ATUALIZAÇÃO

Para usar o formato ISO 8601 em um literal, todos os elementos devem ser especificados. Para citar a seção ISO 8601 da documentação do datetime

Para usar o formato ISO 8601, você deve especificar cada elemento no formato. Isso também inclui o T, os dois pontos (:) e o ponto (.) que são mostrados no formato.

... a fração do segundo componente é opcional. O componente de hora é especificado no formato de 24 horas.