SQLServer Function - Formatos de Fecha
Función SQLServer, útil para devolvernos una fecha en diferentes formatos y tiempo. Se puede utilizar para cálculos y diferencias entre fechas a partir de una dada. Como puede verse, tiene un alcance de acuerdo a lo que fui necesitando, pero puede incrementarse muchísimo y porque no, mejorarla... Espero les sirva y me escriban sus comentarios! MartinSC.
Función SQLServer, útil para devolvernos una fecha en diferentes formatos y tiempo. Se puede utilizar para cálculos y diferencias entre fechas a partir de una dada. Como puede verse, tiene un alcance de acuerdo a lo que fui necesitando, pero puede incrementarse muchísimo y porque no, mejorarla... Espero les sirva y me escriban sus comentarios! MartinSC.
Importante: Las funciones o porciones de código publicadas en nuestro sitio son y serán siempre de autoria de desarrolladores de JMSoluciones Informáticas, caso contrario, la fuente siempre será mencionada.
Importante: Las funciones o porciones de código publicadas en nuestro sitio son y serán siempre de autoria de desarrolladores de JMSoluciones Informáticas, caso contrario, la fuente siempre será mencionada.
create function [dbo].[fnFechaTipo] (
@p_Fecha datetime,
@p_Formato varchar(20)
)
returns varchar(50)
as
/*
JMSOL.com.ar
Autor: Martin San Cristobal
Email: mscmartin@hotmail.com
Comentario: #
select dbo.fnFechaTipo(GetDate(), 'yyyymmdd')
*/
begin
Declare @FechaAux datetime
Declare @FechaStr varchar(50)
Declare @DiaNom char(3)
Declare @Dia char(2)
Declare @MesNom char(3)
Declare @Mes char(2)
Declare @Hora char(8)
Declare @Ano char(4)
Declare @Diferencia char(6)
Set @DiaNom = left(datename(dw, @p_Fecha),3)
Set @Dia = right(day(@p_Fecha)+100,2)
Set @MesNom = left(datename(mm, @p_Fecha),3)
Set @Mes = right(month(@p_Fecha)+1000,2)
Set @Hora = Convert(char(8), @p_Fecha, 108)
Set @Ano = year(@p_Fecha)
Set @Diferencia = '-0300'
Set @FechaStr = @Dia + '/' + @Mes + '/' + @Ano
if (@p_Formato = 'yyyymmdd')
Set @FechaStr = @Ano + @Mes + @Dia
if (@p_Formato = 'dd/mmm/yy')
Set @FechaStr = @Dia + '/' + dbo.fnMesNombre(@p_Fecha) + '/' + @Ano
if (@p_Formato = 'PrincipioMes')
Set @FechaStr = @Ano + @Mes + '01'
if (@p_Formato = 'Calendario')
Set @FechaStr = @Mes + '/' + @Dia + '/' + @Ano + ' ' + @Hora
if (@p_Formato = 'Internacional')
Set @FechaStr = @DiaNom + ', '
+ @Dia + ' ' + @MesNom + ' ' + @Ano + ' '
+ @Hora + ' ' + @Diferencia
if (@p_Formato = 'FinDeMes')
begin
Set @FechaStr = @Ano + @Mes + @Dia
Set @FechaAux = dateadd(month, 1, cast(@FechaStr as datetime))
Set @FechaAux = dateadd(day, - day(@FechaAux), @FechaAux)
Set @Dia = right(day(@FechaAux)+100,2)
Set @Mes = right(month(@FechaAux)+1000,2)
Set @Ano = year(@FechaAux)
Set @FechaStr = @Ano + @Mes + @Dia
end
if (@p_Formato = 'IniMesSig')
begin
Set @FechaAux = dateadd(month, 1, cast(@p_Fecha as datetime))
Set @Dia = '01'
Set @Mes = right(month(@FechaAux)+1000,2)
Set @Ano = year(@FechaAux)
Set @FechaStr = @Ano + @Mes + @Dia
end
return @FechaStr
end