Explorando a função CONVERT com estilos para data e hora em SQL Server

A função CONVERT em SQL Server oferece uma maneira flexível de transformar dados entre diferentes tipos. Um uso comum é a converrsão entre tipos de data/hora (como datetime, smalldatetime) e tipos de string (como varchar, nvarchar). O parâmetro opcional style é crucial para definir o formato exato da saída quando se lida com datas e horas.

A sintaxe básica é:

CONVERT(tipo_destino, expressao[, estilo])

O parâmetro estilo é um número inteiro que determina como uma data ou hora será formatada ao ser convertida para uma string. Abaixo está uma tabela detalhando os estilos mais comuns para conversão de data/hora:

Estilo (Ano 2 dígitos) Estilo (Ano 4 dígitos) Formato de Entrada/Saída
0 100 mon dd yyyy hh:miAM (ou PM)
1 101 mm/dd/yy (Padrão EUA)
2 102 yy-mm-dd (Padrão ANSI)
3 103 dd/mm/yy (Padrão Britânico/Francês)
4 104 dd.mm.yy (Padrão Alemão)
5 105 dd-mm-yy (Padrão Italiano)
6 106 dd mon yy
7 107 mon dd,yy
8 108 hh:mm:ss
9 109 mon dd yyyy hh:mi:ss:mmmmAM (ou PM)
10 110 mm-dd-yy (Padrão EUA)
11 111 yy/mm/dd (Padrão Japonês)
12 112 yymmdd (Padrão ISO)
13 113 dd mon yyyy hh:mi:ss:mmm (24 horas, Padrão Europeu)
14 114 hh:mi:ss:mmm (24 horas)
20 120 yyyy-mm-dd hh:mi:ss (24 horas, Padrão ODBC)
21 121 yyyy-mm-dd hh:mi:ss:mmm (24 horas)

Exemplos de uso com a função GETDATE():

-- Exemplo com estilos de 2 dígitos para ano
SELECT CONVERT(VARCHAR(100), GETDATE(), 1) AS estilo_1; -- Resultado: mm/dd/yy
SELECT CONVERT(VARCHAR(100), GETDATE(), 3) AS estilo_3; -- Resultado: dd/mm/yy
SELECT CONVERT(VARCHAR(100), GETDATE(), 10) AS estilo_10; -- Resultado: mm-dd-yy
SELECT CONVERT(VARCHAR(100), GETDATE(), 12) AS estilo_12; -- Resultado: yymmdd

-- Exemplo com estilos de 4 dígitos para ano
SELECT CONVERT(VARCHAR(100), GETDATE(), 101) AS estilo_101; -- Resultado: mm/dd/yyyy
SELECT CONVERT(VARCHAR(100), GETDATE(), 103) AS estilo_103; -- Resultado: dd/mm/yyyy
SELECT CONVERT(VARCHAR(100), GETDATE(), 110) AS estilo_110; -- Resultado: mm-dd-yyyy
SELECT CONVERT(VARCHAR(100), GETDATE(), 112) AS estilo_112; -- Resultado: yyyymmdd

-- Exemplo com hora
SELECT CONVERT(VARCHAR(100), GETDATE(), 8) AS estilo_hora_simples;   -- Resultado: hh:mm:ss
SELECT CONVERT(VARCHAR(100), GETDATE(), 108) AS estilo_hora_detalhada; -- Resultado: hh:mm:ss
SELECT CONVERT(VARCHAR(100), GETDATE(), 120) AS estilo_odbc;        -- Resultado: yyyy-mm-dd hh:mi:ss
SELECT CONVERT(VARCHAR(100), GETDATE(), 121) AS estilo_odbc_ms;     -- Resultado: yyyy-mm-dd hh:mi:ss:mmm

-- Combinando data e hora com diferentes estilos
SELECT CONVERT(VARCHAR(100), GETDATE(), 103) + ' ' + CONVERT(VARCHAR(100), GETDATE(), 8) AS data_e_hora_combinadas;
-- Exemplo: 16/05/2006 10:57:46

-- Concatenando strings com datas convertidas
SELECT 'O evento ocorrerá em: ' + CONVERT(VARCHAR(100), DATEADD(day, 5, GETDATE()), 103);
-- Exemplo: O evento ocorrerá em: 21/05/2006

É possível concatenar o resultado da função CONVERT com outras strings, permitindo a construção de mensagens formatadas ou a adição de informações adicionais. Isso demonstra a versatilidade da função CONVERT na manipulação e apresentação de dados de data e hora.

Tags: SQL Server CONVERT data hora formatação

Publicado em 8-25 02:00