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

como insertar dimencion fecha sin ciclo.

Estas en el tema de como insertar dimencion fecha sin ciclo. en el foro de SQL Server en Foros del Web. Buenas. Tengo el siguiente codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original CREATE PROCEDURE ejemplo1     AS BEGIN     DECLARE @fDesde DATETIME , @fHasta ...
  #1 (permalink)  
Antiguo 06/12/2011, 14:30
 
Fecha de Ingreso: mayo-2011
Ubicación: sinaloa
Mensajes: 150
Antigüedad: 13 años
Puntos: 4
como insertar dimencion fecha sin ciclo.

Buenas. Tengo el siguiente codigo

Código SQL:
Ver original
  1. CREATE PROCEDURE ejemplo1
  2.     AS BEGIN
  3.     DECLARE @fDesde DATETIME, @fHasta DATETIME
  4.     SELECT @fDesde = '20010101', @fhasta = '20111205'
  5.     ;WITH
  6.         l0 AS(SELECT 0 AS c UNION ALL SELECT 0),
  7.         l1 AS(SELECT 0 AS c FROM l0 AS a, l0 AS b),
  8.         l2 AS(SELECT 0 AS c FROM l1 AS a, l1 AS b),
  9.         l3 AS(SELECT 0 AS c FROM l2 AS a, l2 AS b),
  10.         l4 AS(SELECT 0 AS c FROM l3 AS a, l3 AS b),
  11.         l5 AS(SELECT 0 AS c FROM l4 AS a, l4 AS b),
  12.         l6 AS(SELECT 0 AS c FROM l5 AS a, l5 AS b),
  13.         nums AS(SELECT ROW_NUMBER() OVER(ORDER BY c) AS n FROM l6)
  14.     INSERT TABLA_1(nombre)
  15.         SELECT  DATEADD(DAY, nums.n - 1, @fDesde)
  16.         FROM    nums WHERE n <= DATEDIFF(DAY, @fDesde, @fHasta) + 1
  17. END

Lo que pasa es que me inserta en en la tabla los siguientes valores en el campo:
_____Nombre______ _____ANIO_____ _____MES_____ _____DIA____
Ene 1 2001 12:00AM NULL NULL NULL


bueno me llena varios registros pero con ese formato.
Como puedo hacer para insertar en AÑO el año de esa fecha así como también en MES y DÍA.

Es decir insertar por ejemplo lo siguiente a la tabla TABLA_1
('Ene 1 2001 12:00AM ',2001,1,1)


espero haberme explicado, gracias
  #2 (permalink)  
Antiguo 06/12/2011, 15:03
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: como insertar dimencion fecha sin ciclo.

No entendi bien el SP completo, pero si la consulta que tienes ya inserta correctamente el campo nombre, lo unico que resta es hacer un subquery para hacer la separacion en campos..

algo como esto..

Código:
	INSERT TABLA_1(nombre, ANIO, MES, DIA)    
	SELECT FECHA_X, YEAR(FECHA_X), MONTH(FECHA_X), DAY(FECHA_X)
	FROM
		(
			SELECT  DATEADD(DAY, nums.n - 1, @fDesde) FECHA_X
			FROM    nums 
			WHERE n <= DATEDIFF(DAY, @fDesde, @fHasta) + 1
        ) S
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.

Etiquetas: fecha, registros, select, tabla, campos
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 23:27.