2013-04-12 6 views
5

Ho una tabella con due colonne (date_ID, entry_Date). Voglio inserire tutte le date in un determinato periodo di tempo nella tabella (ad esempio, date tutte le date tra 2002-2030). C'è un modo per farlo utilizzando i loop in SQL-Server?Inserire tutte le date in un periodo di tempo in una tabella

+1

Voglio solo dire quanto è bello che ci siano tre modi diversi al 100% per eseguire lo stesso compito per cui SQL non è veramente progettato, haha ​​:) – Patashu

risposta

4

Prova questo

DECLARE @d date='20020101' 
WHILE @d<'20300101' 
    BEGIN 
     INSERT INTO dbo.Dates (entry_Date) 
     VALUES (@d) 
     SET @d=DATEADD(DAY,1,@d) 
    END 
GO 
+0

grazie molto amico – AfterGlow

+0

@SreeragNs Prego))) –

0
insert into table values(date_ID,(select entry_Date from table where entry_Date between 01/01/2002 and 01/01/2030)) 

Prova questo tipo di query.

Al posto di date_ID inserire il valore appropriato.

4

Questo dovrebbe farlo:

WITH TestItOut AS 
(
    SELECT CAST('2002-01-01' as datetime) DateColumn 
    UNION ALL 
    SELECT DateColumn + 1 
    FROM TestItOut 
    WHERE DateColumn + 1 <= '2030-12-31' 
) 

INSERT INTO YourTable (ColumnName) 
SELECT DateColumn 
FROM TestItOut 
OPTION (MAXRECURSION 0) 
2

in Oracle avrei fatto

insert into sometable 
select to_date('01/01/2013','dd/mm/yyyy') + level 
from dual 
connect by level < 10001 

questo genererà 10000 risale 1/1/13 con un intervallo giornaliero se si desidera un intervallo orario, ad esempio, è sufficiente modificare + level in + level/24.

questa è una query gerarchica di base SQL ANSI - dovrebbe funzionare anche nel server SQL.

+0

+1 ma 'connect by' non è sql ANSI. –

+0

ma esiste in SQL Server, giusto? – haki

+0

Io non la penso così. SQL-Server ha query gerarchiche con CTE (e anche Oracle, oltre alla sintassi 'CONNECT BY'). Come la risposta di McCee. –

Problemi correlati