2013-04-12 3 views
5

두 개의 열 (date_ID, entry_Date)이있는 테이블이 있습니다. 특정 기간 내에 모든 날짜를 표에 삽입하고 싶습니다 (2002-2030 년의 모든 날짜). 거기에 SQL Server에서 루프를 사용하여 할 수있는 방법이 있습니까?테이블에 기간의 모든 날짜 삽입

+1

난 그냥 같은 작업을 수행하는 세 가지 100 % 다른 방법이 있다는 것을 말하고 싶은가 SQL은 실제로, 하하를 위해 설계되지 않았습니다 :) – Patashu

답변

4

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

많은 친구에게 고마워 – AfterGlow

+0

@SreeragNs))))) –

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

이 종류의 쿼리를 시도해보십시오.

date_ID 대신 적절한 값을 입력하십시오.

4

을 시도 이것은을 수행해야합니다

는 오라클에서
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

내가 가진 1/1/13에서 10000 날짜를 생성합니다

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

이 작업을 수행 할 것 일일 간격. 예를 들어 시간 간격을 원하면 + level+ level/24으로 변경할 수 있습니다.

이것은 기본 ANSI SQL 계층 적 쿼리입니다. SQL Server에서도 작동해야합니다.

+0

+1하지만'connect by'는 ANSI sql이 아닙니다. –

+0

하지만 SQL Server에 있습니다. – haki

+0

나는 그렇게 생각하지 않는다. SQL-Server는 CTE (그리고 오라클 또한 'CONNECT BY' 구문 외)를 사용하여 계층 적 쿼리를 제공합니다. 맥시의 대답처럼. –