Função que converte texto “YYYYMMDD” em Data no SQL Server

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.

Exemplo de execução da função

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan Atilio (Daniel Atilio)
Especialista em Engenharia de Software pela FIB. Entusiasta de soluções Open Source. E blogueiro nas horas vagas.

2 Responses

  1. redschenko disse:

    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’)

Deixe uma resposta