Ver Mensaje Individual
  #7 (permalink)  
Antiguo 09/07/2014, 18:23
helibertoarias
 
Fecha de Ingreso: julio-2014
Mensajes: 2
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Seleccionar rango de fechas de a 1 minuto

Disculpas @gnzsoloyo, se me paso. Aquí comparto el código. Basicamente genero los dias contenidos en un rango de fechas sin uso de while, el principio es el mismo y puede aplicarse para horas y o minutos. Espero les sirva.

Código SQL:
Ver original
  1. CREATE DATABASE Demo
  2. GO
  3.  
  4. USE Demo
  5. GO
  6.  
  7. SET NOCOUNT ON
  8.  
  9. IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.TallyTable') AND TYPE IN (N'U'))
  10.     DROP TABLE dbo.TallyTable  
  11. GO
  12.  
  13. CREATE TABLE dbo.TallyTable(ID INT NOT NULL, PRIMARY KEY(ID))
  14.  
  15. GO
  16.  
  17. DECLARE @I INT = 0 /* Puede iniciar en 0 ó 1 según se desee*/
  18. DECLARE @IMax INT = 365*10 /*Para manejar operaciones de días con 10 años aproximadamente*/
  19.  
  20. WHILE @I<=@IMax
  21.     BEGIN
  22.         INSERT INTO dbo.TallyTable VALUES (@I)
  23.         SET @I=@I+1
  24.     END
  25.    
  26. USE Demo
  27. GO
  28.  
  29.  
  30.  
  31. IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'dbo.Hospedaje') AND TYPE IN (N'U'))
  32.     DROP TABLE dbo.Hospedaje    
  33. GO    
  34.  
  35. CREATE TABLE Hospedaje    (
  36.         HospedajeId INT NOT NULL IDENTITY(1,1),
  37.         Cliente VARCHAR(100) NOT NULL,
  38.         FechaIngreso DATE NOT NULL,
  39.         FechaEgreso DATE NOT NULL
  40.      )
  41.      
  42. INSERT INTO dbo.Hospedaje(
  43.           Cliente ,
  44.           FechaIngreso ,
  45.           FechaEgreso
  46.         )
  47.     SELECT 'PEKERMAN', ' 20140504', '20140507'
  48.    
  49. USE Demo
  50. GO
  51.      
  52. SELECT *, DATEADD(DAY, tt.id, h.FechaIngreso) Dia
  53.     FROM dbo.Hospedaje H
  54.         INNER JOIN dbo.TallyTable TT
  55.             ON DATEADD(DAY, tt.id, h.FechaIngreso)<= h.FechaEgreso
  56.     ORDER BY h.Cliente, tt.ID ASC

Los datos se verian algo así