Generar tabla con fecha secuencial

04/01/2008 - 21:00 por Rodrigo | Informe spam
como generar una tabla que contenga en cada registro el incremento de una
determinada fecha
hasta una cantidad x de dias de incremento.
Ejemplo:
1/1/2008
2/1/2008
3/1/2008

los parametros que debe recibir el procedimiento almacenado son la fecha y
la cantidad de dias que se quiere incrementar secuencialmente.

Gracias.

Preguntas similare

Leer las respuestas

#1 Jorge
04/01/2008 - 21:43 | Informe spam
Yo tengo algo asi (creo que te puede ayudar). Donde @Ini, @Fin son las
fechas desde hasta cuando quieres la data y @Inc es los dias a incrementar.

DECLARE @INI DATETIME
DECLARE @FIN DATETIME
DECLARE @INC TINYINT
SET @INI = '20050101'
SET @FIN = '20071231'
SET @INC = 1

DECLARE @DIA DATETIME
SET @DIA = @INI
SET DATEFIRST 1 PRIMER DIA DE LA SEMANA: LUNES

CREATE TABLE #TABLA (FECHA DATETIME,DIA VARCHAR(10))

WHILE @DIA <= @FIN
BEGIN
INSERT INTO #TABLA(FECHA,DIA)
SELECT @DIA,CASE DATEPART(DW,@DIA) WHEN 1 THEN 'Lunes' WHEN 2
THEN 'Martes' WHEN 3 THEN 'Miércoles' WHEN 4 THEN 'Jueves' WHEN 5 THEN
'Viernes' WHEN 6 THEN 'Sábado' WHEN 7 THEN 'Domingo' ELSE '' END

SET @DIA = @DIA + @INC
END

SELECT * FROM #TABLA ORDER BY 1 DESC
DROP TABLE #TABLA

Saludos
Jorge G.



"Rodrigo" escribió en el mensaje
news:
como generar una tabla que contenga en cada registro el incremento de una
determinada fecha
hasta una cantidad x de dias de incremento.
Ejemplo:
1/1/2008
2/1/2008
3/1/2008

los parametros que debe recibir el procedimiento almacenado son la fecha y
la cantidad de dias que se quiere incrementar secuencialmente.

Gracias.
Respuesta Responder a este mensaje
#2 Carlos M. Calvelo
04/01/2008 - 21:53 | Informe spam
Hola Rodrigo,

On 4 jan, 21:00, Rodrigo wrote:
como generar una tabla que contenga en cada registro el incremento de una
determinada fecha
hasta una cantidad x de dias de incremento.
Ejemplo:
        1/1/2008
        2/1/2008
        3/1/2008

los parametros que debe recibir el procedimiento almacenado son la fecha y
la cantidad de dias que se quiere incrementar secuencialmente.




Esta función genera una tabla de números desde un mínimo
a un máximo, y se puede utilizar en muchos contextos.

CREATE FUNCTION Numeros (@minno INT, @maxno INT)
RETURNS @numeros TABLE (numero int not null primary key)
AS
BEGIN
WHILE @minno <= @maxno
BEGIN
INSERT INTO @numeros VALUES (@minno)
SET @minno = @minno + 1
END
RETURN
END

Con esta función podemos ahora por ejemplo generar
las 20 primeras fechas del 2008 así:

select dateadd(day, N.numero, '20080101') from Numeros(0,19) N

Saludos,
Carlos
Respuesta Responder a este mensaje
#3 Carlos M. Calvelo
04/01/2008 - 22:16 | Informe spam
CREATE FUNCTION Numeros (@minno INT, @maxno INT)
RETURNS @numeros TABLE (numero int not null primary key)
.



La declaración de @numeros no necesita el 'not null' y
el 'primary key' para nada, claro.

RETURNS @numeros TABLE(numero int)

es suficiente.

Saludos,
Carlos
Respuesta Responder a este mensaje
#4 Alejandro Mesa
05/01/2008 - 02:55 | Informe spam
Rodrigo,

Puedes usar este codigo directamente o puedes crear una funcion que devuelva
una tabla de numeros, la cual puedas referenciar en una sentencia select.

CREATE TABLE dbo.fecha (
fecha DATETIME NOT NULL PRIMARY KEY
)
GO

declare @x int
declare @d datetime

set @x = 366
set @d = '20080101'

;with
L0 as (select 1 as c1 union all select 1),
L1 as (select 1 as c1 from L0 as a cross join L0 as b),
L2 as (select 1 as c1 from L1 as a cross join L1 as b),
L3 as (select 1 as c1 from L2 as a cross join L2 as b),
L4 as (select 1 as c1 from L3 as a cross join L3 as b),
L5 as (select 1 as c1 from L4 as a cross join L4 as b),
Numeros as (select row_number() over(order by (select 1)) as Numero from L5)
INSERT INTO dbo.fecha(fecha)
select @d + (Numero - 1)
from Numeros
where Numero <= @x

SELECT *
FROM dbo.fecha
ORDER BY fecha
GO

DROP TABLE dbo.fecha
GO


AMB

"Rodrigo" wrote:

como generar una tabla que contenga en cada registro el incremento de una
determinada fecha
hasta una cantidad x de dias de incremento.
Ejemplo:
1/1/2008
2/1/2008
3/1/2008

los parametros que debe recibir el procedimiento almacenado son la fecha y
la cantidad de dias que se quiere incrementar secuencialmente.

Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida