SQL सर्वर में पिछले महीने का पहला और अंतिम दिन (टाइमस्टैम्प के साथ) कैसे प्राप्त करें


116

मुझे वह समाधान नहीं मिला, जो टाइमस्टैम्प के साथ पिछले महीने का पहला और आखिरी दिन देता है। आशा है कि यह दूसरों की मदद करता है। अगर पहले से ही इस समस्या का कोई हल है तो मैं माफी माँगता हूँ।

यहाँ समाधान है।

 SELECT DATEADD(month, DATEDIFF(month, -1, getdate()) - 2, 0) as FirtDayPreviousMonthWithTimeStamp,
    DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as LastDayPreviousMonthWithTimeStamp

यह निम्नलिखित लौटाएगा यदि currentdate = '2012-7-31'

परिणाम: 2012-06-01 00:00:00.000 2012-06-30 23:59:59.000

यह निम्नलिखित लौटाएगा यदि currentdate = '2012-1-1'

परिणाम: 2011-12-01 00:00:00.000 2011-12-31 23:59:59.000


यह एक सवाल है या एक जवाब है?
मार्क बायर्स

12
एक दिन का अंतिम दूसरा प्राप्त करना बेकार है। यदि आप एक महीने में सभी डेटा चाहते हैं, तो अगले महीने का 1 = दिन 1 और <दिन 1 अधिक उपयोगी है।
एरॉन बर्ट्रेंड

जवाबों:


226
select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) --First day of previous month
select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) --Last Day of previous month

2
अगर मैं का उपयोग -1में DATEDIFFफेंक देता है और त्रुटि है किThe arguments to the following function are not valid: DATEDIFF
श्री

1
@Thiru सभी SQL सॉफ्टवेयर्स DatedIFF () फ़ंक्शन में 3 तर्कों की अनुमति नहीं देते हैं। मुझे पता है कि SQL सर्वर करता है, लेकिन मुझे यकीन नहीं है कि MySQL करता है।
DaOnlyBG

डेटेडिफ केवल दो तर्क देता है। मुझे # 1582 - नेटिव फंक्शन '
डेडिटिफ

1
@daOnlyBG - यह SQL Server
Geoff Griswald

110

वर्तमान सप्ताह का पहला दिन।

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),0),106)

वर्तमान सप्ताह का अंतिम दिन।

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),6),106)

पिछले हफ्ते का पहला दिन।

select CONVERT(varchar,DATEADD(week,datediff(week,7,getdate()),0),106)

अंतिम सप्ताह का अंतिम दिन

select CONVERT(varchar,dateadd(week,datediff(week,7,getdate()),6),106)

अगले सप्ताह का पहला दिन

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),7),106)

अगले सप्ताह का अंतिम दिन

select CONVERT(varchar,dateadd(week,datediff(week,0,getdate()),13),106)

वर्तमान माह का पहला दिन।

select CONVERT(varchar,dateadd(d,-(day(getdate()-1)),getdate()),106)

वर्तमान माह का अंतिम दिन।

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()))),dateadd(m,1,getdate())),106)

इस उदाहरण में केवल दिनांक 31 पर कार्य करता है। शेष दिन नहीं हैं।

पिछले महीने का पहला दिन।

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,-1,getdate()-2))),dateadd(m,-1,getdate()-1)),106)

अंतिम माह का अंतिम दिन।

select CONVERT(varchar,dateadd(d,-(day(getdate())),getdate()),106)

अगले महीने का पहला दिन।

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,1,getdate()-1))),dateadd(m,1,getdate())),106)

अगले महीने का अंतिम दिन

select CONVERT(varchar,dateadd(d,-(day(dateadd(m,2,getdate()))),DATEADD(m,2,getdate())),106)

वर्तमान वर्ष का पहला दिन।

select CONVERT(varchar,dateadd(year,datediff(year,0,getdate()),0),106)

वर्तमान वर्ष का अंतिम दिन।

select CONVERT(varchar,dateadd(ms,-2,dateadd(year,0,dateadd(year,datediff(year,0,getdate())+1,0))),106)

पिछले साल का पहला दिन।

select CONVERT(varchar,dateadd(year,datediff(year,0,getdate())-1,0),106)

अंतिम वर्ष का अंतिम दिन।

select CONVERT(varchar,dateadd(ms,-2,dateadd(year,0,dateadd(year,datediff(year,0,getdate()),0))),106)

अगले साल का पहला दिन।

select CONVERT(varchar,dateadd(YEAR,DATEDIFF(year,0,getdate())+1,0),106)

अगले साल का आखिरी दिन

select CONVERT(varchar,dateadd(ms,-2,dateadd(year,0,dateadd(year,datediff(year,0,getdate())+2,0))),106)

4
STYANARA, अच्छे कार्यों के बहुत, धन्यवाद। जब आप कहते हैं कि इसका क्या मतलब है "इस उदाहरण में काम करता है केवल तारीख 31 पर है। और शेष दिन नहीं हैं।" यकीन नहीं होता कि मैं समझ रहा हूं कि आप किसका जिक्र कर रहे हैं।
एलन फिशर

1
मैं उसी तरह काम करने की कोशिश कर रहा हूं। उस वाक्य का कोई मतलब नहीं है।
kenjara

महीने के पहले दिन आज के वर्तमान महीने के अपने पहले दिन की कोशिश की, और यह पिछले महीने के पहले दिन वापस आ गया।
मिलिट्री

लवली! अपने दैनिक कार्य को पूरा करने के लिए बहुत उपयोगी कार्य एसक्यूएल जॉब
अपवर्डड

यदि CAST उपलब्ध है तो CONVERT सबसे अच्छा समाधान नहीं है
केनाह


13

उपाय

आपके द्वारा अनुरोधित तारीख प्रारूप को ODBC प्रारूप (कोड 120 ) कहा जाता है ।

वास्तव में आपके द्वारा अनुरोधित मूल्यों की गणना करने के लिए, अपने एसक्यूएल में निम्नलिखित को शामिल करें।

कॉपी पेस्ट...

DECLARE
    @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, -1, GETDATE() - 2)) ), DATEADD(m, -1, GETDATE() - 1)))
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE()) ), GETDATE()))

... और अपने कोड में उपयोग करें:

  • @FirstDayOfLastMonth
  • @LastDayOfLastMonth

ध्यान रखें कि इसे मापदंडों को संदर्भित करने वाले किसी भी बयान से पहले चिपकाया जाना चाहिए, लेकिन उस बिंदु से आप अपने कोड में @FirstDayOfLastMonth और @LastDayOfLastMonth का संदर्भ ले सकते हैं ।

उदाहरण

आइए देखते हैं कुछ कोड एक्शन:

DECLARE
    @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, -1, GETDATE() - 2)) ), DATEADD(m, -1, GETDATE() - 1)))
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE()) ), GETDATE()))

SELECT
    'First day of last month' AS Title, CONVERT(VARCHAR, @FirstDayOfLastMonth , 120) AS [ODBC]
UNION 

SELECT 
    'Last day of last month' AS Title, CONVERT(VARCHAR, @LastDayOfLastMonth , 120) AS [ODBC]

निम्न आउटपुट को बनाने के लिए उपरोक्त कोड चलाएँ:

चित्र a

नोट: यह ध्यान रखें कि मेरे लिए आज की तारीख 12 सितंबर, 2016 है

अधिक (पूर्णता के लिए)

आम तारीख मापदंडों

क्या आप और अधिक चाहते हैं?

आसान दिनांक संबंधित पैरामीटर की एक अधिक व्यापक श्रेणी सेट करने के लिए, अपने SQL में निम्न शामिल करें:

DECLARE
    @FirstDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0))
    , @LastDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 6))
    , @FirstDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 0))
    , @LastDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 6))
    , @FirstDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 7))
    , @LastDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 13))
    , @FirstDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE() - 1) ), GETDATE()))
    , @LastDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, 1, GETDATE())) ), DATEADD(m, 1, GETDATE())))
    , @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, -1, GETDATE() - 2)) ), DATEADD(m, -1, GETDATE() - 1)))
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE()) ), GETDATE()))
    , @FirstDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, 1, GETDATE() - 1)) ), DATEADD(m, 1, GETDATE())))
    , @LastDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, 2, GETDATE())) ), DATEADD(m, 2, GETDATE())))
    , @FirstDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0))
    , @LastDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))))
    , @FirstDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0))
    , @LastDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0))))
    , @FirstDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
    , @LastDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 2, 0))))

यह सबसे पहले इसे अपनी प्रक्रिया या SQL क्वेरी के शीर्ष पर अधिमानतः शामिल करने के लिए समझ में आता है।

एक बार घोषित करने के बाद, मापदंडों को आपके कोड में कहीं भी संदर्भित किया जा सकता है, जितनी बार आपको उनकी आवश्यकता होती है।

उदाहरण

आइए देखते हैं कुछ कोड एक्शन:

DECLARE
    @FirstDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0))
    , @LastDayOfCurrentWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 6))
    , @FirstDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 0))
    , @LastDayOfLastWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 7, GETDATE()), 6))
    , @FirstDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 7))
    , @LastDayOfNextWeek DATETIME = CONVERT(DATE, DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 13))
    , @FirstDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE() - 1) ), GETDATE()))
    , @LastDayOfCurrentMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, 1, GETDATE())) ), DATEADD(m, 1, GETDATE())))
    , @FirstDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, -1, GETDATE() - 2)) ), DATEADD(m, -1, GETDATE() - 1)))
    , @LastDayOfLastMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(GETDATE()) ), GETDATE()))
    , @FirstDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, 1, GETDATE() - 1)) ), DATEADD(m, 1, GETDATE())))
    , @LastDayOfNextMonth DATETIME = CONVERT(DATE, DATEADD(d, -( DAY(DATEADD(m, 2, GETDATE())) ), DATEADD(m, 2, GETDATE())))
    , @FirstDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0))
    , @LastDayOfCurrentYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))))
    , @FirstDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0))
    , @LastDayOfLastYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0))))
    , @FirstDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0))
    , @LastDayOfNextYear DATETIME = CONVERT(DATE, DATEADD(ms, -2, DATEADD(YEAR, 0, DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 2, 0))))

SELECT  
    'a) FirstDayOfCurrentWeek.' AS [Title] ,
    @FirstDayOfCurrentWeek AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 104) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 105) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 111) + ' ' + CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentWeek, 120) AS [ODBC]
UNION
SELECT  
    'b) LastDayOfCurrentWeek.' AS [Title] ,
    @LastDayOfCurrentWeek AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfCurrentWeek, 120) AS [ODBC]
UNION
SELECT  
    'c) FirstDayOfLastWeek.' AS [Title] ,
    @FirstDayOfLastWeek AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfLastWeek, 120) AS [ODBC]
UNION
SELECT  
    'd) LastDayOfLastWeek.' AS [Title] ,
    @LastDayOfLastWeek AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfLastWeek, 120) AS [ODBC]
UNION
SELECT  
    'e) FirstDayOfNextWeek.' AS [Title] ,
    @FirstDayOfNextWeek AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfNextWeek, 120) AS [ODBC]
UNION
SELECT  
    'f) LastDayOfNextWeek.' AS [Title] ,
    @LastDayOfNextWeek AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfNextWeek, 120) AS [ODBC]
UNION
SELECT  
    'g) FirstDayOfCurrentMonth.' AS [Title] ,
    @FirstDayOfCurrentMonth AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentMonth, 120) AS [ODBC]
UNION
SELECT  
    'h) LastDayOfCurrentMonth.' AS [Title] ,
    @LastDayOfCurrentMonth AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfCurrentMonth, 120) AS [ODBC]
UNION
SELECT  
    'i) FirstDayOfLastMonth.' AS [Title] ,
    @FirstDayOfLastMonth AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfLastMonth, 120) AS [ODBC]
UNION
SELECT  
    'j) LastDayOfLastMonth.' AS [Title] ,
    @LastDayOfLastMonth AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfLastMonth, 120) AS [ODBC]
UNION
SELECT  
    'k) FirstDayOfNextMonth.' AS [Title] ,
    @FirstDayOfNextMonth AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfNextMonth, 120) AS [ODBC]
UNION
SELECT  
    'l) LastDayOfNextMonth.' AS [Title] ,
    @LastDayOfNextMonth AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfNextMonth, 120) AS [ODBC]
UNION
SELECT  
    'm) FirstDayOfCurrentYear.' AS [Title] ,
    @FirstDayOfCurrentYear AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfCurrentYear, 120) AS [ODBC]
UNION
SELECT  
    'n) LastDayOfCurrentYear.' AS [Title] ,
    @LastDayOfCurrentYear AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfCurrentYear, 120) AS [ODBC]
UNION
SELECT  
    'o) FirstDayOfLastYear.' AS [Title] ,
    @FirstDayOfLastYear AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfLastYear, 120) AS [ODBC]
UNION
SELECT  
    'p) LastDayOfLastYear.' AS [Title] ,
    @LastDayOfLastYear AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfLastYear, 120) AS [ODBC]
UNION
SELECT  
    'q) FirstDayOfNextYear.' AS [Title] ,
    @FirstDayOfNextYear AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @FirstDayOfNextYear, 120) AS [ODBC]
UNION
SELECT  
    'r) LastDayOfNextYear.' AS [Title] ,
    @LastDayOfNextYear AS [DATE (Server default)] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 127) AS [ISO8601] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 103) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [British&French] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 104) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [German] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 105) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Italian] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 111) + ' ' +  CONVERT(CHAR(5), @FirstDayOfCurrentWeek, 108) AS [Japan] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 100) AS [U.S.] ,
    CONVERT(VARCHAR, @LastDayOfNextYear, 120) AS [ODBC];

निम्न आउटपुट को बनाने के लिए उपरोक्त कोड चलाएँ:

यहां छवि विवरण दर्ज करें

यदि आपका देश गायब है, तो इसका कारण यह है कि मुझे इसके लिए कोड नहीं पता है। यदि आप इस उत्तर को संपादित कर सकते हैं और अपने देश के लिए एक नया कॉलम जोड़ सकते हैं तो यह सबसे अधिक सहायक और सराहनीय होगा।

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

नोट: यह ध्यान रखें कि मेरे लिए आज की तारीख 12 सितंबर, 2016 है

संदर्भ

ISO8601 अंतरराष्ट्रीय तिथि मानक पर आगे पढ़ने के लिए, इस लिंक का अनुसरण करें:

ODBC अंतर्राष्ट्रीय दिनांक मानक पर आगे पढ़ने के लिए, इस लिंक का अनुसरण करें:

मेरे द्वारा काम किए गए दिनांक स्वरूपों की सूची देखने के लिए, इस लिंक का अनुसरण करें:

DATETIME डेटा प्रकार पर आगे पढ़ने के लिए, इस लिंक का अनुसरण करें:



3

SQL2012 से, एक नया फ़ंक्शन शुरू किया गया है जिसे कहा जाता है EOMONTH। इस फ़ंक्शन का उपयोग करके पिछले महीने का पहला और अंतिम दिन आसानी से पाया जा सकता है।

select DATEADD(DD,1,EOMONTH(Getdate(),-2)) firstdayoflastmonth, EOMONTH(Getdate(), -1) lastdayoflastmonth

1

मैंने SSRS रिपोर्ट में निम्नलिखित तर्क का उपयोग किया है।

BUS_DATE = 17-09-2013

X=DATEADD(MONTH,-1,BUS_DATE) = 17-08-2013

Y=DAY(BUS_DATE)=17

first_date = DATEADD(DAY,-Y+1,X)=01-08-2013

last_date  = DATEADD(DAY,-Y,BUS_DATE)=31-08-2013

1

आप निष्पादित करके SQL सर्वर में पिछले महीने का पहला और अंतिम दिन (टाइमस्टैम्प के साथ) प्राप्त कर सकते हैं

--select dateadd(dd,-datepart(dd,getdate())+1,dateadd(mm,-1,getdate())) --first day of previous month 
--select dateadd(dd,-datepart(dd,getdate()),getdate()) -- last day of previous month**

1

कुछ आधार तिथि लें जो किसी महीने की 31 वीं तारीख है जैसे '20011231'। फिर
निम्नलिखित प्रक्रिया का उपयोग करें (मैंने नीचे 3 समान उदाहरण दिए हैं, केवल @dt मान भिन्न है)।

declare @dt datetime;

set @dt = '20140312'

SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');



set @dt = '20140208'

SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');



set @dt = '20140405'

SELECT DATEADD(month, DATEDIFF(month, '20011231', @dt), '20011231');

1

यहाँ एक बिल्कुल सीधे आगे और गतिशील तरीका है। पिछले महीने के अंतिम दिन के लिए, आज की तारीख से वर्तमान संख्यात्मक दिन घटाएं। पिछले महीने के पहले दिन के लिए, समान कोड का उपयोग करें, बस पूर्व परिणाम से संख्यात्मक दिन घटाना और 1 जोड़ें।

declare @PriorEOM as datetime
declare @PriorFOM as datetime

Set @PriorEOM = dateadd(day,-day(getdate()),getdate())

Set @PriorFOM = dateadd(day,-day(@PriorEOM) + 1,@PriorEOM)

Print @PriorEOM
Print @PriorFOM

1

पिछले महीने की पहली तारीख पाने के लिए:

select DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) LastMonthFirstDate                                                                

पिछले महीने की अंतिम तारीख पाने के लिए:

select DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1) LastMonthEndDate

यह इस मौजूदा जवाब का सिर्फ एक बहुत कुछ है ।
पैंग

1

मैंने अभी तक प्रस्तुत इस समाधान को नहीं देखा है; इसकी सरल पठनीयता के लिए यह मेरी प्राथमिकता है:

select dateadd(month,-1,format(getutcdate(),'yyyy-MM-01'))

-1

यह पिछले महीने के पहले दिन को प्राप्त करने का सबसे सरल तरीका है:

चरण 1: डेटा को पोस्टग्रेज में ले जाएं

चरण 2:

select date_trunc('month', getdate()) - '1 MONTH'::interval;

SQL सर्वर में date_trunc उपलब्ध नहीं है।
DtechNet

1
@DNetNet धन्यवाद! मैंने उसके लिए अपने जवाब को अपडेट किया।
मार्कस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.