Vale lembrar que ano, mês e dia podem ser tratados facilmente utilizando-se as funções de sistema Year(), Month() e Day(), entretando, incluí estas opções na função para torná-la mais completa.
A FUNÇÃO
A função fn_dateformat (clique sobre o nome para fazer download do script), permite formatar uma data em até 12 possíveis formatos e obrigatoriamente deve receber dois parâmetros:
@data: Do tipo smalldatetime, é a data a ser formatada.
@formato: Do tipo int, é o formato de data esperado, podendo variar entre 1 e 12.
Opções de formato:
1 – dia/mes/ano ->> 31/08/2005 (Default)
2 – dia-mes-ano ->> 31-08-2005
3 – Somente dia ->> 31
4 – Somente Mês ->> 08
5 – Somente Ano ->> 2005
6 – mes/dia/ano ->> 08/31/2005
7 – mes-dia-ano ->> 08-31-2005
8 – Formato Longo ->> 31 de Agosto de 2005
9 – Formato Curto ->> 31-Agosto-2005
10 – Mês/Ano ->> Agosto/2005
11 – Mês/Ano ->> 08/2005
12 – Dia/Hora ->> 31-08-2005 13:14
Nota: Caso os formatos acima ainda não atenda suas necessidades, use esta função como um template para desenvolver sua própria função.
USANDO A FUNÇÃO
A utilização da função fn_dateformat é bastante simples. Como a função é processada para cada linha retornada pelo SELECT, basta incluir sua chamada passando como parametro a data a ser formatada e o formato desejado.
Exemplos:
SELECT dbo.fn_dateformat(getdate(), 5) as [Ano]
Ano
——————–
2005
SELECT dbo.fn_dateformat(getdate(), 8) as [Longo]
Longo
——————–
31 de Agosto de 2005
SELECT TOP 3 title_id,pubdate as [Formato Original],
dbo.fn_dateformat(pubdate, 1) as [Data Formatada]
FROM titles ORDER BY pubdate DESC
title_id Formato Original Data Formatada
——– ————————- —————
PC9999 2000-08-06 01:33:54.140 06/08/2000
MC3026 2000-08-06 01:33:54.123 06/08/2000
PC8888 1994-06-12 00:00:00.000 12/06/1994
SELECT TOP 3 title_id,pubdate as [Formato Original],
dbo.fn_dateformat(pubdate, 9) as [Data Formatada]
FROM titles ORDER BY pubdate DESC
title_id Formato Original Data Formatada
——– ———————— ————–
PC9999 2000-08-06 01:33:54.140 06-Agosto-2000
MC3026 2000-08-06 01:33:54.123 06-Agosto-2000
PC8888 1994-06-12 00:00:00.000 12-Junho-1994
SELECT TOP 3 title_id,pubdate as [Formato Original],
dbo.fn_dateformat(pubdate, 10) as [Data Formatada]
FROM titles ORDER BY pubdate DESC
title_id Formato Original Data Formatada
——– ———————— ————–
PC9999 2000-08-06 01:33:54.140 Agosto/2000
MC3026 2000-08-06 01:33:54.123 Agosto/2000
PC8888 1994-06-12 00:00:00.000 Junho/1994

