Oi! Seja bem-vindo!

Hoje vamos aprender a FORMATAR DATAS no SQL com um script bem fácil, porém muito útil na construção de relatórios e consultas, especialmente se você trabalha com clientes de vários países.

Como formatar datas no SQL Server

Quando consultamos datas no SQL, por padrão elas são demonstradas no formato internacional (AAAA-MM-DD HH:MM:SS), o que muitas vezes não atende ao gosto dos nossos usuários.

Por sorte a Microsoft disponibiliza uma infinidade de maneiras para formatarmos datas no SQL Server, e no script abaixo vou te mostrar as que considero mais fáceis e rápidas. Espero que goste!

ARTLIGNE FITNESS: in PORNIC, Loire Valley, a walk in France best first cycle steroids gyms and fitness in romana and surroundings

------------------------------------------------------------------
-- Formatar datas no SQL Server
------------------------------------------------------------------

-- Usando o convert (modo mais popular)
select
	getdate() padrao_internacional,
	-- Ano com 2 digitos
	convert(varchar, getdate(),   0) ' 0: mmm dd aaaa hh:mm XX',
	convert(varchar, getdate(),   1) ' 1: mm/dd/aa',
	convert(varchar, getdate(),   2) ' 2: aa.mm.dd',
	convert(varchar, getdate(),   3) ' 3: dd/mm/aa - Brasil 2 dig',
	convert(varchar, getdate(),   4) ' 4: dd.mm.aa',
	convert(varchar, getdate(),   5) ' 5: dd-mm-aa',
	convert(varchar, getdate(),   6) ' 6: dd mmm aa',
	convert(varchar, getdate(),   7) ' 7: mmm dd, aa',
	convert(varchar, getdate(),   8) ' 8: hh:mm:ss',
	convert(varchar, getdate(),   9) ' 9: mmm dd aaaa hh:mm:ss:mi XX',
	convert(varchar, getdate(),  10) '10: mm-dd-aa',
	convert(varchar, getdate(),  11) '11: aa/mm/dd',
	convert(varchar, getdate(),  12) '12: aammdd',
	convert(varchar, getdate(),  13) '13: dd mmm aaaa hh:mm:ss:mi',
	convert(varchar, getdate(),  14) '14: hh:mm:ss:mi',
	-- Ano com 4 digitos
	convert(varchar, getdate(), 100) '100 = 0',
	convert(varchar, getdate(), 101) '101: dd-mm-aaaa',
	convert(varchar, getdate(), 102) '102: aaa.mm.dd',
	convert(varchar, getdate(), 103) '103: dd/mm/aaaa - Brasil 4 dig',
	convert(varchar, getdate(), 104) '104: dd.mm.aaaa',
	convert(varchar, getdate(), 105) '105: dd-mm-aaaa',
	convert(varchar, getdate(), 106) '106: dd mmm aaaa',
	convert(varchar, getdate(), 107) '107: mmm dd, aaaa',
	convert(varchar, getdate(), 108) '108: hh:mm:ss',
	convert(varchar, getdate(), 109) '109 = 09',
	convert(varchar, getdate(), 110) '110: mm-dd-aaaa',
	convert(varchar, getdate(), 111) '111: aaaa-mm-dd',
	convert(varchar, getdate(), 112) '112: aaaammdd',
	convert(varchar, getdate(), 113) '113 = 13',
	convert(varchar, getdate(), 114) '114 = 14'

-- Personalizando o formato: SQL2012+ (Format: https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql)
select
	getdate() getdate_padrao,
	format (getdate(), 'd', 'pt-br') getdate_BR_1,
	format (getdate(), 'd', 'en-us') getdate_US_1,
	format (getdate(), 'D', 'pt-br') getdate_BR_2,
	format (getdate(), 'D', 'en-us') getdate_US_2,
	format (getdate(), 'dd-MM-yy') getdate_custom_1,
	format (getdate(), 'dd/MM/yyyy | HH:mm:ss') getdate_custom_2 -- HH = hora 24 horas; hh = hora 12 horas

-- Personalizando o formato: SQL2012- (o céu é o limite, aqui vão 3 exemplos)
select
	replace(convert(varchar, getdate(),   3), '/', '#') 'Modo 3 substituindo / por #',
	convert(varchar, month(getdate())) + '/' + convert(varchar, year(getdate())) 'mes/ano',
	cast(datepart(hour, getdate()) as varchar) + ' horas ' + cast(datepart(minute, getdate()) as varchar) + ' minutos' 'hh horas mm minutos'

CONCLUSÃO

Existe uma infinidade de maneiras de formatar datas no SQL Server. Com esse pequeno script você nunca mais vai passar aperto tentando lembrar “qual código eu preciso colocar para formatar a data em ….”. Eu mesmo uso direto! 🙂

Espero que tenha gostado do artigo, nos vemos no próximo!

Abraço do seu amigo Josué

4 respostas

  1. Olá. Achei util, mas ainda não consegui o que queria, porque quando vou para o Excel, ele considera a data como texto e não como data.

    1. Oi Inês, bom dia! No vídeo não abordei migração de dados para Excel, ainda assim, não costumo ter problemas, desde que formate as datas no SQL conforme o padrão de idioma/região do Excel que estiver usando. Abraço, Josué

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *