Microsoft SQL Server
कई प्रकार की तिथियां बनाना
खोज…
पैरामीटर
पैरामीटर | विवरण |
---|---|
@तारीख से | उत्पन्न तिथि सीमा की समावेशी निचली सीमा। |
@तारीख तक | उत्पन्न तिथि सीमा की समावेशी ऊपरी सीमा। |
टिप्पणियों
अधिकांश विशेषज्ञ मक्खी पर एक सीक्वेंस बनाने के बजाय डेट्स टेबल बनाने की सलाह देते हैं। Http://dba.stackexchange.com/questions/86435/filling-in-date-holes-in-grouped-by-date-sql-data देखें
पुनरावर्ती CTE के साथ जनरेटिंग डेट रेंज
एक पुनरावर्ती CTE का उपयोग करके, आप तिथियों की एक समावेशी श्रेणी उत्पन्न कर सकते हैं:
Declare @FromDate Date = '2014-04-21',
@ToDate Date = '2014-05-02'
;With DateCte (Date) As
(
Select @FromDate Union All
Select DateAdd(Day, 1, Date)
From DateCte
Where Date < @ToDate
)
Select Date
From DateCte
Option (MaxRecursion 0)
डिफ़ॉल्ट MaxRecursion
सेटिंग 100 है। इस पद्धति का उपयोग करके 100 से अधिक तिथियां उत्पन्न करने के लिए क्वेरी के Option (MaxRecursion N)
खंड की आवश्यकता होगी, जहां N
वांछित MaxRecursion
सेटिंग है। इसे 0
सेट करने से MaxRecursion
सीमा पूरी तरह से MaxRecursion
जाएगी।
टैली टेबल के साथ डेट रेंज जनरेट करना
दूसरा तरीका जिससे आप तिथियों की एक श्रृंखला उत्पन्न कर सकते हैं, सीमा के बीच की तिथियों को बनाने के लिए टैली टेबल का उपयोग करके है:
Declare @FromDate Date = '2014-04-21',
@ToDate Date = '2014-05-02'
;With
E1(N) As (Select 1 From (Values (1), (1), (1), (1), (1), (1), (1), (1), (1), (1)) DT(N)),
E2(N) As (Select 1 From E1 A Cross Join E1 B),
E4(N) As (Select 1 From E2 A Cross Join E2 B),
E6(N) As (Select 1 From E4 A Cross Join E2 B),
Tally(N) As
(
Select Row_Number() Over (Order By (Select Null))
From E6
)
Select DateAdd(Day, N - 1, @FromDate) Date
From Tally
Where N <= DateDiff(Day, @FromDate, @ToDate) + 1
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow