03/01/2009, 10:11
|
| | | Fecha de Ingreso: marzo-2002 Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 10 meses Puntos: 7 | |
Function para devolver la fecha en formato dd-MMM-yyyy He creado una función en SQL 2005 para que me devuelva una fecha formateada como 03-Ene-2009 (dd-MMM-yyyy).
El código de la función es:
Código:
CREATE FUNCTION fn_FormatFecha (@Fecha datetime)
RETURNS varchar
AS
BEGIN
DECLARE @Result varchar(23)
Select @Result = SubString(Convert(varchar(10),@Fecha,120),9,2) + '-' +
Case SubString(Convert(varchar(7),@Fecha,120),6,2) When '01' Then 'Ene' When '02' Then 'Feb' When '03' Then 'Mar' When '04' Then 'Abr' When '05' Then 'May' When '06' Then 'Jun' When '07' Then 'Jul' When '08' Then 'Ago' When '09' Then 'Sep' When '10' Then 'Oct' When '11' Then 'Nov' When '12' Then 'Dic' end + '-' +
Convert(varchar(4),@Fecha,120) + ' ' +
case SubString(Convert(varchar(20),@Fecha,120),12,2)
when '00' then '12'
when '13' then '01'
when '14' then '02'
when '15' then '03'
when '16' then '04'
when '17' then '05'
when '18' then '06'
when '19' then '07'
when '20' then '08'
when '21' then '09'
when '22' then '10'
when '23' then '11'
when '24' then '12' else
SubString(Convert(varchar(20),@Fecha,120),12,2) end
+ ':' + SubString(Convert(varchar(20),@Fecha,120),15,6)
+ ' ' + case SubString(Convert(varchar(20),@Fecha,120),12,2)
when '00' then 'AM'
when '13' then 'PM'
when '14' then 'PM'
when '15' then 'PM'
when '16' then 'PM'
when '17' then 'PM'
when '18' then 'PM'
when '19' then 'PM'
when '20' then 'PM'
when '21' then 'PM'
when '22' then 'PM'
when '23' then 'PM'
when '24' then 'PM' else 'AM' end
RETURN @Result
END
Ahora bien, cuando llamo la función asi:
Código:
Select dbo.fn_FormatFecha(GetDate())
, el resultado es cero.
Sin embargo, cuando pruebo mi código me trae el resultado correcto. Para probar, utilizo el siguiente código:
Código:
DECLARE @Result varchar(23)
DECLARE @Fecha datetime
Select @Fecha = getDate()
Select @Result = SubString(Convert(varchar(10),@Fecha,120),9,2) + '-' +
Case SubString(Convert(varchar(7),@Fecha,120),6,2) When '01' Then 'Ene' When '02' Then 'Feb' When '03' Then 'Mar' When '04' Then 'Abr' When '05' Then 'May' When '06' Then 'Jun' When '07' Then 'Jul' When '08' Then 'Ago' When '09' Then 'Sep' When '10' Then 'Oct' When '11' Then 'Nov' When '12' Then 'Dic' end + '-' +
Convert(varchar(4),@Fecha,120) + ' ' +
case SubString(Convert(varchar(20),@Fecha,120),12,2)
when '00' then '12'
when '13' then '01'
when '14' then '02'
when '15' then '03'
when '16' then '04'
when '17' then '05'
when '18' then '06'
when '19' then '07'
when '20' then '08'
when '21' then '09'
when '22' then '10'
when '23' then '11'
when '24' then '12' else
SubString(Convert(varchar(20),@Fecha,120),12,2) end
+ ':' + SubString(Convert(varchar(20),@Fecha,120),15,6)
+ ' ' + case SubString(Convert(varchar(20),@Fecha,120),12,2)
when '00' then 'AM'
when '13' then 'PM'
when '14' then 'PM'
when '15' then 'PM'
when '16' then 'PM'
when '17' then 'PM'
when '18' then 'PM'
when '19' then 'PM'
when '20' then 'PM'
when '21' then 'PM'
when '22' then 'PM'
when '23' then 'PM'
when '24' then 'PM' else 'AM' end
Select @Result
__________________ .::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance-- |