Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Lista de Años entre dos fechas

Estas en el tema de Lista de Años entre dos fechas en el foro de SQL Server en Foros del Web. Maestros un saludo cordial, Lo que necesito creo que es sencillo pero no se me ocurre como hacerlo en SQL Server. Tengo siempre dos fechas; ...
  #1 (permalink)  
Antiguo 21/03/2013, 12:24
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Lista de Años entre dos fechas

Maestros un saludo cordial,

Lo que necesito creo que es sencillo pero no se me ocurre como hacerlo en SQL Server.

Tengo siempre dos fechas; fecha_inicio y fecha_fin............necesito obtener el listado de años que hay entre ellas por ejemplo :

fecha_inicio : 2010-01-30
fecha_fin : 2012-02-02

Lo que quiero es que SQL Server me retorne :

2010
2011
2012



Otro ejemplo :

fecha_inicio : 2012-05-30
fecha_fin : 2012-01-30

SQL Server debería retornarme :

2012


Eso es todo..............Gracias de antemano, todas las ayuda sirve.

Saludos.
__________________
EL LIMITE ES EL UNIVERSO
  #2 (permalink)  
Antiguo 21/03/2013, 12:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Lista de Años entre dos fechas

Código SQL:
Ver original
  1. CREATE TABLE #years
  2. (
  3. dato INT
  4. )
  5.  
  6. DECLARE @fecha_inicio datetime
  7. DECLARE @fecha datetime
  8. DECLARE @fin INT
  9. DECLARE @x INT
  10.  
  11. SET @fecha_inicio=getdate()
  12. SET @x=1
  13. SET @fin=2014
  14.  
  15. while @x<=@fin
  16. BEGIN
  17. INSERT INTO #years VALUES (datepart(yyyy,dateadd(yyyy,@x,@fecha_inicio)))
  18. SET @x=@x+1
  19. END
  20.  
  21. SELECT * FROM #years
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/03/2013, 12:55
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Lista de Años entre dos fechas

Muy simple:

select distinct Año = year(fecha) from TABLA where fecha >= '20000101' and fecha >= '20130101'

Este sql te va a mostrar los años que existen entre el 01/01/2000 y el 01/01/2013, modificalo para obtener lo que quieres ;)

...


yyy con variables seria así:

declare @inicio datetime
declare @fin datetime
set @inicio = '20000101'
set @fin = '20130101'

select distinct Año = year(fecha) from TABLA where fecha >= @inicio and fecha >= @fin


Saludos.
  #4 (permalink)  
Antiguo 21/03/2013, 13:07
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Respuesta: Lista de Años entre dos fechas

Muchachos muchas gracias por su valioso tiempo..........

Me suena muchisimo la respuesta de leo_acn pero no tengo claro el query final :

Código PHP:
select distinct Año year(fechafrom TABLA where fecha >= @inicio and fecha >= @fin 

Es decir.....que debo poner en fecha donde dice year(fecha) ???

Gracias de nuevo...
__________________
EL LIMITE ES EL UNIVERSO
  #5 (permalink)  
Antiguo 21/03/2013, 13:26
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Respuesta: Lista de Años entre dos fechas

Estimados,

Ya se ha solucionado tomando como base otro post del foro.............dejo la solución por si alguien la requiere en el futuro.

Saludos y Gracias.


Código PHP:
declare @Fecha_inicio datetime '20100815'
declare @Fecha_final datetime '20120712'
 
WHILE @Fecha_inicio < @Fecha_final
   BEGIN
     
PRINT DATEPART(YY,@Fecha_inicio)
     
SELECT  @Fecha_inicio dateadd(yy1, @Fecha_inicio)
     CONTINUE
   
END
   
PRINT DATEPART(YY,@Fecha_inicio
__________________
EL LIMITE ES EL UNIVERSO
  #6 (permalink)  
Antiguo 21/03/2013, 13:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Lista de Años entre dos fechas

no se que diferencia tiene con el codigo que te puse....pero lo bueno es que lo solucionaste :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 21/03/2013, 13:29
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Respuesta: Lista de Años entre dos fechas

Muchas gracias Libras.........es practicamente lo mismo pero sin hacer insert (no quiero crear una tabla más).

Gracias de nuevo por vuestra valiosa Ayuda.
__________________
EL LIMITE ES EL UNIVERSO
  #8 (permalink)  
Antiguo 21/03/2013, 13:30
 
Fecha de Ingreso: diciembre-2012
Mensajes: 83
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Lista de Años entre dos fechas

habia entendido mal tu pregunta jajajaja xD pero sip, que bueno que lo solucionaste
  #9 (permalink)  
Antiguo 21/03/2013, 13:35
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Lista de Años entre dos fechas

Cita:
Iniciado por jpogsistem Ver Mensaje
Muchas gracias Libras.........es practicamente lo mismo pero sin hacer insert (no quiero crear una tabla más).

Gracias de nuevo por vuestra valiosa Ayuda.
crearias una temporal.......aunque la logica aplica igual pero en lugar de insertar haces un

select datepart(yyyy,dateadd(yyyy,@x,@fecha_inicio))
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: lista, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:34.