sexta-feira, 28 de maio de 2010

MS SQL Server - Alterar formato da data

Sei que isso é algo muito simples de fazer, mas na dúvida posso precisar de novo, então vou compartilhar minhas soluções.

Tive que fazer uma consulta no banco de dados, MS SQL Server, e me deparei com o formato do tipo datetime retornado:
2010-01-01 00:00:00.000
que equivale
ano-dia-mês hora:minuto:segudos.milisegundos


Mas na verdade precisava apenas de:
dia/mês/ano ou 01/01/2010


Falaram para que convertesse o valor retornado da consulta(2010-01-01 00:00:00.000) com tratamento de string dentro do meu código para o resultado esperado(01/01/2010), mas não gostei muito desta solução, então segue o minha solução:

DECLARE @myval datetime
SET @myval = '2010-01-11 00:00:00.000'


SELECT cast(day(@myval) as varchar(2))+'/'+
cast(month(@myval) as varchar(2))+'/'+
cast(year(@myval) as varchar(4))

Mas o resultado:

1/11/2010


Obs: Faltou o zero a esquerda.

Depois descobri que poderia ter feito isto de outra maneira:

DECLARE @myval datetime
SET @myval = '2010-01-11 00:00:00.000'
 
SELECT convert(char(10), @myval, 103)

Resultado:

01/11/2010


Observe que o 103 é o código do padrão da data, veja referência 2 para tabela de códigos.

Referências:
1 - DateFormat for SQL Server - http://www.petefreitag.com/item/687.cfm
2 - CAST and CONVERT - http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx