Hoje vou mostrar uma função simples, criada para converter textos no formado “YYYYMMDD” (ano, mês e dia) para Data.
Para converter um conteúdo texto para Data, basta utilizar a função CONVERT no SQL Server, porém para cláusulas grandes, acaba ficando estranho ter muitas chamadas de CONVERT e até fica poluído o código.
Pensando nisso, e para otimizar a leitura das queries, foi criada uma função para “encapsular” a chamada do CONVERT deixando o código mais limpo, veja:
--Se não existir a função IF OBJECT_ID('dbo.fConverteData') IS NOT NULL DROP FUNCTION dbo.fConverteData GO --Cria a função, recebendo por parâmetro a data no formato "YYYYMMDD" CREATE FUNCTION dbo.fConverteData(@data VARCHAR(10)) RETURNS VARCHAR(10) AS BEGIN --Define o resultado e faz a conversão para o tipo Data DECLARE @resultado VARCHAR(10) SET @resultado = CONVERT(VARCHAR, CONVERT(DATE, @data), 103) RETURN @resultado END
Agora, para executar, basta você chamar a função passando a data por parâmetro.
SELECT '20190101', dbo.fConverteData('20190101')
Abaixo um print do resultado do comando acima.
Bom pessoal, por hoje é só.
Abraços e até a próxima.
Olá Danilo.
Outra alternativa, caso esteja usando o SQL Server 2012 ou superior é utilizar a função FORMAT()
Documentação: https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
Exemplo
Select FORMAT(CONVERT(DATETIME,’20200318′), ‘dd/MM/yyyy’)
Bom dia jovem.
Opa, obrigado pelo comentário. Desconhecia essa função.
Grande abraço.