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.