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.
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

Volver a Novedades