Como recupero uma data do SQL Server no YYYY-MM-DD
formato? Eu preciso disso para trabalhar com o SQL Server 2000 e superior. Existe uma maneira simples de fazer isso no SQL Server ou seria mais fácil convertê-lo programaticamente depois de recuperar o conjunto de resultados?
Eu li o CAST e o CONVERT no Microsoft Technet, mas o formato que eu quero não está listado e alterar o formato da data não é uma opção.
sql-server
tsql
Kinze
fonte
fonte
Respostas:
Limitando o tamanho das costeletas varchar da parte da hora que você não deseja.
fonte
fonte
Começando com o SQL Server 2012 (a pergunta original é para 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
fonte
O formulário que você procura está listado na documentação online dos livros.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Por exemplo, tente o seguinte:
fonte
A
convert
função com o especificador de formato 120 fornecerá o formato "aaaa-MM-dd HH: mm: ss", portanto, basta limitar o comprimento a 10 para obter apenas a parte da data:No entanto, geralmente é melhor fazer a formatação de datas na camada de apresentação do que na camada de banco de dados ou de negócios. Se você retornar a data formatada no banco de dados, o código do cliente precisará analisá-la novamente para uma data se precisar fazer cálculos.
Exemplo em C #:
fonte
Para AAAAMMDD, tente
Eu testei apenas no SQLServer2008.
fonte
Uma outra maneira ...
fonte
Para aqueles que desejam a parte do tempo também (eu queria), o seguinte snippet pode ajudar
fonte
Também fará truques sem "cortar nada".
fonte
Caso alguém queira fazer o contrário e encontrar isso.
Isso converte uma sequência no formato de data em alemão em um objeto de data e hora.
Por que 104? Consulte aqui: http://msdn.microsoft.com/en-us/library/ms187928.aspx
fonte
No link de conversão e conversão, use o estilo 126 da seguinte maneira:
CONVERT (varchar(10), DTvalue, 126)
Isso trunca o tempo. Seu requisito para tê-lo em aaaa-mm-dd significa que ele deve ser um tipo de dados e data / hora da cadeia de caracteres.
Francamente, eu faria isso no cliente, a menos que você tenha boas razões para não fazê-lo.
fonte
Se você quiser usá-lo como uma data em vez de
varchar
novamente depois, não se esqueça de convertê-lo novamente:fonte
Não sei por que a maneira mais simples foi ignorada / omitida nas respostas acima:
Eu prefiro o segundo porque qualquer que seja o idioma que você fale, você entenderá em que data é!
Além disso, o SQL Server sempre o 'entende' quando você o envia para o procedimento de salvamento, independentemente de quais formatos regionais estão definidos nos computadores - eu sempre uso o ano inteiro (aaaa), o nome do mês (MMM) e o formato de 24 horas (HH maiúsculo) por uma hora na minha programação.
fonte
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
fonte
Você também pode usar. Isso ocorre usando o novo tipo de dados
DATE
. Pode não funcionar em todas as versões anteriores, mas muito simplificado para uso na versão posterior.fonte
Eu usaria:
fonte
fonte
No SQL Server 2008, você pode fazer isso:
CONVERT(date,getdate())
fonte
Parece desnecessário fazer coisas estranhas, se você quiser que sua data seja separada por uma barra. Apenas escape com uma barra invertida. Caso contrário, você terminará com um ponto.
Testado no SQL Server 2016
fonte
Usar uma instrução CASE para cada uma das funções de conversão / conversão sempre funciona para mim:
Espero que isso tenha sido útil. Chagbert.
fonte
Esta solução funciona para mim, simples e eficaz (também com 126)
fonte
Se o seu formato de data de origem estiver todo bagunçado, tente algo como:
fonte
fonte