2013-04-12 6 views
5

मेरे पास एक तालिका है जिसमें दो कॉलम हैं (date_ID, entry_Date)। मैं सभी तिथियों को तालिका में एक विशिष्ट समय अवधि के भीतर सम्मिलित करना चाहता हूं (कहें 2002-2030 के बीच सभी तिथियों की तारीखें)। क्या एसक्यूएल-सर्वर में लूप का उपयोग करने का कोई तरीका है?तालिका में एक समय अवधि में सभी तिथियां डालें

+1

मैं बस यह कहना चाहता हूं कि यह कितना अच्छा है कि एक ही कार्य को पूरा करने के लिए तीन 100% विभिन्न तरीके हैं एसक्यूएल वास्तव में डिजाइन नहीं किया गया है, हाहा :) – 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)) 

इस तरह की क्वेरी को आजमाएं।

दिनांक_आईडी के स्थान पर आपका उचित मूल्य डाल दिया गया है।

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

ओरेकल में मैं

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

इस करना होगा एक साथ 1/1/13 से 10000 दिनांक उत्पन्न होगा दैनिक अंतराल। यदि आप उदाहरण के लिए प्रति घंटा अंतराल चाहते हैं तो आप केवल + level से + level/24 बदल सकते हैं।

यह मूल एएनएसआई एसक्यूएल पदानुक्रमित क्वेरी है - इसे SQL सर्वर में भी काम करना चाहिए।

+0

+1 लेकिन 'द्वारा कनेक्ट' एएनएसआई एसक्यूएल नहीं है। –

+0

लेकिन यह SQL सर्वर में मौजूद है, है ना? – haki

+0

मुझे ऐसा नहीं लगता है। एसक्यूएल-सर्वर में सीटीई के साथ पदानुक्रमित प्रश्न हैं (और ओरेकल भी, 'कनेक्ट द्वारा' सिंटैक्स के अलावा)। मैककी के जवाब की तरह। –

संबंधित मुद्दे