none
Obtener cantidad de semanas entre 2 rangos de fechas RRS feed

  • Pregunta

  • Hola, buenos días, hace una semana consulte como podría obtener la cantidad de semanas entre 2 rangos de fechas, me habían ayudado con la siguiente instrucción:

    SELECT DATEPART(ISO_WEEK, @fechaFin) - DATEPART(ISO_WEEK, @fechaInicio) + 1, 

    la instrucción funciona bien cuando las fechas @fechaFin y @fechaInicio son del mismo año, pero tengo problemas cuando las fechas son de diferentes años, por ejemplo

    @fechaFin = '18/01/2018'

    @fechaInicio = '12/12/2017'

    Al realizar la resta me sale un valor negativo.

    Cualquier ayuda estaré muy agradecido.

     
    miércoles, 17 de enero de 2018 13:40

Respuestas

  • te va salir un valor negativo por que

    Fecha fin sera igual a  3 o 2 si comienza en 0 o 1 , y  el valor que le restas es CASI a 51o52

    eL  ISO_WEEK supongo que solo te devuelve el nro de semana del año  por eso tu valor negativo .

    Lo que podrias hacer una validacion cuando son de diferentes años

                            ( 53- DATEPART(ISO_WEEK, @fechaFin))      +     DATEPART(ISO_WEEK, @fechaInicio)


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!


    miércoles, 17 de enero de 2018 14:10
  •  if  YEAR(fechainicio) < YEAR (fechafin) ...

      if DATEPART (year, fechainicio)<  DATEPART (year, fechafin)...

    prueba alguna forma no tengo SQLServer ala mano


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    • Marcado como respuesta JCORBETTO miércoles, 17 de enero de 2018 19:44
    miércoles, 17 de enero de 2018 16:10

Todas las respuestas

  • te va salir un valor negativo por que

    Fecha fin sera igual a  3 o 2 si comienza en 0 o 1 , y  el valor que le restas es CASI a 51o52

    eL  ISO_WEEK supongo que solo te devuelve el nro de semana del año  por eso tu valor negativo .

    Lo que podrias hacer una validacion cuando son de diferentes años

                            ( 53- DATEPART(ISO_WEEK, @fechaFin))      +     DATEPART(ISO_WEEK, @fechaInicio)


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!


    miércoles, 17 de enero de 2018 14:10
  • Hola Dane gracias por contestar, le hice una pequeña modificación a la instrucción:

    SELECT (DATEPART(ISO_WEEK, @fechaFin)) + (53-DATEPART(ISO_WEEK, @fechaInicio)) + 1 

    Lo probé de manera manual y funciona bien, solo una consulta mas, como podría validar si el año de @fechaInicio y @fechaFin son de años diferentes, no tengo mucha experiencia en manejo de fechas.

    Cualquier ayuda estaré muy agradecido

     
    miércoles, 17 de enero de 2018 14:39
  •  if  YEAR(fechainicio) < YEAR (fechafin) ...

      if DATEPART (year, fechainicio)<  DATEPART (year, fechafin)...

    prueba alguna forma no tengo SQLServer ala mano


    Si necesitas ayuda sube tu avance de otro modo no puedo ayudarte , Suerte!

    • Marcado como respuesta JCORBETTO miércoles, 17 de enero de 2018 19:44
    miércoles, 17 de enero de 2018 16:10
  • Me encontre este codigo en la red

    declare @StartDate date = '20171212'
    declare @EndDate date = '20180118'
    select ceiling(convert(float, abs(datediff(day, @StartDate, @EndDate))) / 7)

    miércoles, 17 de enero de 2018 16:49