Obtener fechas en SQL Server

El primer dia del mes:

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

El Ultimo dia del mes:

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()  )+1, 0));


El Lunes de la semana actual:

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)


Primer dia del año:

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

Ultimo dia del mes anterior:

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()  ), 0));

Ultimo dia del año anterior:

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate() ), 0))

Primer lunes del mes:

SELECT DATEADD(wk, DATEDIFF(wk,0,
dateadd(dd,6-datepart(DAY,getdate()),getdate())), 0);

65 comentarios en “Obtener fechas en SQL Server

  1. MTC

    Esta es la forma de obtener el primer día de la semana dado el año y el número de semana.

    DECLARE @Year varchar(4)
    SET @Year = ‘2012’

    DECLARE @Week int
    SET @Week = 23

    DECLARE @FirstDayOfYear datetime
    SET @FirstDayOfYear = CAST( (CAST(@Year as varchar(4)) +’-01-01′) as DateTime) ;

    SELECT DATEADD(week,@week,@firstDayOfYear)

  2. Braffy

    Esta es la forma de obtener el primer día de la semana dado el año y el número de semana. usando las funciones

    obtiene el primer dia de la semana 23 del año 2012

    DECLARE @Year date
    SET @Year = ‘2012-8-22′
    DECLARE @Week int
    SET @Week = 23
    DECLARE @FirstDayOfYear date
    SET @FirstDayOfYear = DATEADD(yy, DATEDIFF(yy,0,@Year), 0);
    SELECT DATEADD(week,@week,@firstDayOfYear)

    para obtener el numero e la semana estan estas 4 formas
    SELECT DATEPART( WEEK , GETDATE())
    SELECT DATEPART( WK , ’08/21/2012′)
    SELECT DATEPART( WW , ’08/21/2012’)
    SELECT DATEPART( WW , ‘2012-12-29′)

    para saber que semana es, recordando que las semanas numeradas comienzan con lunes
    select DATEADD(DAY , (31*7)-6 ,’2012-01-01′), DATEADD(DAY , (31*7) ,’2012-01-01’)

  3. Braffy

    aqui la funcion para cualquier peroido que se quiera conocer
    Create FUNCTION fn_EnQuePeriodoEstamos
    (
    @Fecha as DATE
    ,@PeriodoEnDias as INT
    )
    RETURNS INT
    AS
    BEGIN
    DECLARE @Resultado INT
    DECLARE @PrimerDiaDelAnio DATE
    –DECLARE @Periodos INT
    DECLARE @PeriodosEncontrados INT
    DECLARE @DiasTranscurridos INT
    DECLARE @DiasSobrantes INT

    –calculando cuantos periodos dados tiene el año
    –SET @Periodos = 365 / @PeriodoEnDias
    –calculo el primer dia del año entregado
    SET @PrimerDiaDelAnio = DATEADD(yy, DATEDIFF(yy,0,@Fecha), 0)
    –calculo cuantos dias han pasado
    SET @DiasTranscurridos = datediff(day, @PrimerDiaDelAnio ,@Fecha)
    –calculo cuantos periodos caben en los dias transcurridos
    SET @PeriodosEncontrados = @DiasTranscurridos / @PeriodoEnDias
    –obtengo el modulo si hay mas de 1 brinca el periodo
    SET @DiasSobrantes = @DiasTranscurridos % @PeriodoEnDias

    IF (@DiasSobrantes > 0)
    SET @PeriodosEncontrados = @PeriodosEncontrados + 1

    SET @Resultado = @PeriodosEncontrados

    RETURN @Resultado

    END
    GO
    /*

    select dbo.fn_EnQuePeriodoEstamos(getdate(),31)
    select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,7) –semana
    select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,14) –catorcena
    select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,15) –quincena
    select dbo.fn_EnQuePeriodoEstamos(‘2012-12-30’,31) –mes
    */

  4. Ramiro Castaneda

    Quién me podría ayudar a Conseguir la siguiente consulta:
    Obtener los nombres de la tabla Datos que se ingresaron en la fecha ‘X’ a la fecha ‘Y’, pero hay que tener en cuenta que en esa tabla Datos solo existe 1 atributo de Fecha que es de tipo datetime, no hay 2 que digan fecha1 y fecha2… ojo!!! lo necesito en storeprocedure… Les agradecería mucho… A ver quién me ayuda… Muchas bendiciones a todos

  5. brianda

    Hola quisiera saber si me pueden ayudar a conocer el ultimo dia de la semana sabiendo la semana y el año…

  6. gacsale

    Alguien me puede ayudar…
    Quiero obtener solo el año del mes anterior, esto es para no tener problemas en el mes de enero…

    Desde ya, gracias por sus respuestas!!!

  7. Diego

    Estimados:

    Necesito obtener el ultimo día hábil del mes, por el ejemplo el ultimo día hábil de agosto 2014 .

    Muchas gracias.

  8. chocolim Autor

    El ultimo dia habil es un concepto un poco profundo. El ultimo dia habil es el ultimo dia en la ultima del mes en la cual para el pais donde estas no sea feriado y para la empresa donde se usa tu consulta no sea asueto.
    Y esa parte es la que es un poco dura de hacer. Porque no haces algo que encuentre el ultimo dia del mes y te vas restando hasta que encuentres un dia que no sea domingo ni feriado. Los dias feriados y/o asuetos guarda en una tabla y consulta en tu bucle.

  9. john

    hola un saludo alguien puede ayudarme con este pequeño problema como puedo obtener con el numero de semana el rango de fecha por ejemplo la semana un y me de el resultado de por decir algo el 01-01-2014 al 07-01-2014 nose si me supe explicar de antemano muchas gracias…

  10. chocolim Autor

    Si al primer dia del año le sumas 7 por el numero que tenes, deberias poder encontrar el primer dia de la semana. A ese valor le sumas 1 semana y vas a tener la fecha del fin de la semana.

  11. JESUS

    Hola, quisiera saber como puedo hacer para cambiar el idioma de los meses del año. Tengo
    TO_VARCHAR(A.»DocDate»,’DD MONTH YYYY’) «FechaDoc»,

    Quiero cambiar los meses del año a español con CASE.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.