Há muitos formatos suportados pelo SQL Server - consulte os MSDN Books Online em
CAST
e CONVERT
. A maioria desses formatos é dependente em quais configurações você tem - portanto, essas configurações podem funcionar algumas vezes - e às vezes não. A maneira de resolver isso é usar o (ligeiramente adaptado) formato de data ISO-8601 que é suportado pelo SQL Server - este formato funciona sempre - independentemente do idioma do SQL Server e das configurações de formato de data.
O formato ISO-8601 é suportado pelo SQL Server vem em dois tipos:
YYYYMMDD
apenas para datas (sem porção de tempo); observe aqui:sem traços! , isso é muito importante!YYYY-MM-DD
é NÃO independente das configurações de formato de data em seu SQL Server e NÃO trabalhe em todas as situações!
ou:
YYYY-MM-DDTHH:MM:SS
para datas e horas - observe aqui:este formato tem traços (mas eles podem ser omitido), e umT
fixo como delimitador entre a parte de data e hora do seuDATETIME
.
Isso é válido para o SQL Server 2000 e mais recente.
Se você usa o SQL Server 2008 ou mais recente e o
DATE
tipo de dados (somente DATE
- não DATETIME
!), então você também pode usar o YYYY-MM-DD
formato e isso também funcionará com qualquer configuração em seu SQL Server. Não me pergunte por que todo esse tópico é tão complicado e um tanto confuso - é assim que é. Mas com o
YYYYMMDD
formato, você deve estar bem para qualquer versão do SQL Server e para qualquer configuração de idioma e formato de data em seu SQL Server. A recomendação para SQL Server 2008 e mais recente é usar
DATE
se você precisar apenas da parte da data e DATETIME2(n)
quando você precisa de data e hora. Você deve tentar começar a descontinuar o DATETIME
tipo de dados se possível