मेरे पास SQL ​​​​में डेटा प्रस्तुत करने की प्रक्रिया है। मैं हर महीने के अंत में डेटा तैयार करना चाहता हूं मान लीजिए कि मैं प्रक्रिया को महीने के आखिरी दिन चलाना चाहता हूं उदा। 31 जनवरी 2020 को इसे 1 जनवरी से 31 जनवरी तक डेटा तैयार करना चाहिए।

तो यह साल के सभी महीनों में चलती खिड़की की तरह है। क्योंकि मुझे हर महीने के अंत में मूल्यांकन के लिए डेटा चाहिए।

मैंने यह कोशिश की, हालांकि, यह स्वचालन नहीं देता है। हर महीने की अपनी तरह का मैनुअल रनिंग एंड

select '2020-10-01' as beginDate_AnalysisWindow  
, '2020 -01-31' as endDate_AnalysisWindow 
   into #AnalysisWindow --create temporary table #AnalysisWindow 

मैंने निम्नलिखित की भी कोशिश की, हालांकि, मुझे यकीन नहीं है कि यह पूरे महीने या सिर्फ एक दिन के लिए होता है?

SELECT START_OF_MONTH_DATE AS beginDate_AnalysisWindow
,END_OF_MONTH_DATE AS endDate_AnalysisWindow
INTO #AnalysisWindow
FROM [dbo].[Date] WITH (NOLOCK)
WHERE DATE = DATEADD(dd, - 1,  CAST(GETDATE() AS DATE))

क्या कोई कृपया मेरी मदद कर सकता है/मुझे कुछ सुझाव दे सकता है।

अग्रिम में धन्यवाद

0
James Taylor 18 फरवरी 2020, 17:55
1
अपने प्रश्न को उस डेटाबेस के साथ टैग करें जिसका आप उपयोग कर रहे हैं।
 – 
Gordon Linoff
18 फरवरी 2020, 17:55
क्योंकि वह क्वेरी उत्पाद विशिष्ट है।
 – 
jarlh
18 फरवरी 2020, 17:56
आपका अंतिम परिणाम कैसा दिखता है?
 – 
Eric Brandt
18 फरवरी 2020, 18:04

2 जवाब

यदि आप चालू माह का अंतिम दिन चाहते हैं, तो eomonth() का उपयोग करें:

WHERE DATE = CONVERT(date, EOMONTH(GETDATE()))

नोट: यह मानता है कि date कॉलम में कोई समय घटक नहीं है। अगर ऐसी बात है:

WHERE CONVERT(date, DATE) = CONVERT(date, EOMONTH(GETDATE()))

इस प्रकार के रूपांतरण के लिए भी SQL सर्वर अभी भी एक अनुक्रमणिका (यदि उपलब्ध हो) का उपयोग करेगा।

संपादित करें:

वर्तमान महीनों का डेटा प्राप्त करने के लिए, एक विधि है:

WHERE DATE <= CONVERT(date, EOMONTH(GETDATE())) AND
      DATE > CONVERT(date, EOMONTH(GETDATE(), -1)) 

EOMONTH() के लिए दूसरा तर्क एक महीने की ऑफसेट है।

0
Gordon Linoff 18 फरवरी 2020, 18:32
धन्यवाद, वी बहुत। इसका क्या मतलब; मुझे महीने के पहले दिन और आखिरी दिन से डेटा मिल जाएगा?
 – 
James Taylor
18 फरवरी 2020, 18:10
. . . यह सिर्फ आखिरी दिन है: "क्योंकि मुझे हर महीने के अंत में मूल्यांकन के लिए डेटा चाहिए।"
 – 
Gordon Linoff
18 फरवरी 2020, 18:24
क्षमा करें, मुझे फिर से कहना चाहिए "मैं अंतिम दिन डेटा तैयार करना चाहता हूं, लेकिन यह महीनों के सभी दिनों के लिए होना चाहिए (उदाहरण 1 - 31 से: (जनवरी के मामले में 31 दिन))
 – 
James Taylor
18 फरवरी 2020, 18:27

आप भी कोशिश कर सकते हैं:

where getdate() <= EOMONTH(GETDATE()) AND
      getdate() > DATEADD(DAY, 1, EOMONTH(GETDATE(), -1))

Getdate() के बजाय, आप अपने दिनांक कॉलम का उपयोग कर सकते हैं।

0
dataconsumer 18 फरवरी 2020, 19:16