दिलचस्प पोस्ट
फ़ाइल सामग्री में स्ट्रिंग को बदलें डाटाबेस रिकार्ड के भौतिक बनाम तार्किक / नरम हटाना? एंड्रॉइड एन्क्रिप्शन SQL सर्वर: सभी अपर केस को उचित केस / शीर्षक केस में बनायें अपने डेटासॉर्स से एक सेल प्राप्त करने में विफल जावा में स्ट्रिंग की अधिकतम लंबाई – कॉलिंग लंबाई () विधि सी #: विधानसभा में सभी वर्गों की सूची जावा में yyyy-MM-dd प्रारूप के लिए कैलेंडर की तारीख क्या लोगों को सी / सी ++ में बना हुआ अनुचित मान्यताओं का प्रदर्शन करने के लिए एक शैक्षिक उपकरण का क्या है? छवि UriSource और डेटा बाइंडिंग 2 कॉलम पर आधारित डुप्लिकेट कॉलम जोड़े, सॉर्ट पंक्तियाँ निकालें JTable में एक पंक्ति का पृष्ठभूमि रंग बदलें Jqgrid 3.7 इंटरनेट एक्सप्लोरर में पंक्तियों को प्रदर्शित नहीं करता है पटरियों 4.1 में चयन से enum सहेज रहा है कैसे सी # में बहुआयामी (2 डी) सरणी का आकार बदलना है?

SQL सर्वर में एक महीने में दिनों की संख्या निर्धारित करने के लिए कैसे?

SQL सर्वर में दी गई तिथि के लिए मुझे एक महीने में दिनों की संख्या निर्धारित करने की आवश्यकता है I

वहाँ एक अंतर्निहित समारोह है? यदि नहीं, तो मुझे उपयोगकर्ता-परिभाषित फ़ंक्शन के रूप में क्या उपयोग करना चाहिए?

Solutions Collecting From Web of "SQL सर्वर में एक महीने में दिनों की संख्या निर्धारित करने के लिए कैसे?"

आप निर्दिष्ट महीने के पहले दिन निम्न का उपयोग कर सकते हैं:

datediff(day, @date, dateadd(month, 1, @date)) 

इसे हर तिथि के लिए काम करने के लिए:

 datediff(day, dateadd(day, 1-day(@date), @date), dateadd(month, 1, dateadd(day, 1-day(@date), @date))) 

SQL सर्वर 2012 में आप महीने के अंतिम दिन प्राप्त करने के लिए EOMONTH (Transact-SQL) का उपयोग कर सकते हैं और फिर आप महीने में दिनों की संख्या प्राप्त करने के लिए DAY (Transact-SQL) का उपयोग कर सकते हैं।

 DECLARE @ADate DATETIME SET @ADate = GETDATE() SELECT DAY(EOMONTH(@ADate)) AS DaysInMonth 

सबसे सुरुचिपूर्ण समाधान: किसी भी @ डेट के लिए काम करता है

 DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,@DATE),0))) 

इसे फ़ंक्शन में फेंक दें या बस इनलाइन का उपयोग करें यह अन्य उत्तरों में सभी अतिरिक्त जंक के बिना मूल प्रश्न का उत्तर देता है।

अन्य उत्तरों से दिनांक के लिए उदाहरण:

SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'1/31/2009'),0))) 31 रिटर्न

SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'2404-feb-15'),0))) रिटर्न 29

SELECT DAY(DATEADD(DD,-1,DATEADD(MM,DATEDIFF(MM,-1,'2011-12-22'),0))) 31 रिटर्न

बहुत सरल … कोशिश करें day(eomonth(@Date))

 --Last Day of Previous Month SELECT DATEPART(day, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0))) --Last Day of Current Month SELECT DATEPART(day, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) --Last Day of Next Month SELECT DATEPART(day, DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+2,0))) 

निजी तौर पर हालांकि, मैं इसके लिए एक यूडीएफ बना सकता हूं अगर कोई फ़ंक्शन नहीं बनाया गया है …

यह कोड आपको वर्तमान माह में दिनों की संख्या देता है:

 SELECT datediff(dd,getdate(),dateadd(mm,1,getdate())) as datas 

आप जिस तारीख को गिनना चाहते हैं, उस तिथि से getdate() की तारीख getdate() को बदलें।

मै सुझाव दूंगा:

दिन का चयन करें (ईओएमओएनएचटी (प्राप्त करना) ())

समाधान 1: वर्तमान में हम जो भी महीने में हैं, उस दिन की संख्या का पता लगाएं

 DECLARE @dt datetime SET @dt = getdate() SELECT @dt AS [DateTime], DAY(DATEADD(mm, DATEDIFF(mm, -1, @dt), -1)) AS [Days in Month] 

समाधान 2: किसी दिए गए माह-वर्ष कॉम्बो में दिनों की संख्या का पता लगाएं

 DECLARE @y int, @m int SET @y = 2012 SET @m = 2 SELECT @y AS [Year], @m AS [Month], DATEDIFF(DAY, DATEADD(DAY, 0, DATEADD(m, ((@y - 1900) * 12) + @m - 1, 0)), DATEADD(DAY, 0, DATEADD(m, ((@y - 1900) * 12) + @m, 0)) ) AS [Days in Month] 

आपको फ़ंक्शन जोड़ने की आवश्यकता है, लेकिन यह एक सरल है मैं इसका उपयोग करता हूं:

 CREATE FUNCTION [dbo].[ufn_GetDaysInMonth] ( @pDate DATETIME ) RETURNS INT AS BEGIN SET @pDate = CONVERT(VARCHAR(10), @pDate, 101) SET @pDate = @pDate - DAY(@pDate) + 1 RETURN DATEDIFF(DD, @pDate, DATEADD(MM, 1, @pDate)) END GO 
 SELECT Datediff(day, (Convert(DateTime,Convert(varchar(2),Month(getdate()))+'/01/'+Convert(varchar(4),Year(getdate())))), (Convert(DateTime,Convert(varchar(2),Month(getdate())+1)+'/01/'+Convert(varchar(4),Year(getdate()))))) as [No.of Days in a Month] 
 select datediff(day, dateadd(day, 0, dateadd(month, ((2013 - 1900) * 12) + 3 - 1, 0)), dateadd(day, 0, dateadd(month, ((2013 - 1900) * 12) + 3, 0)) ) 

अच्छा सरल और किसी भी फ़ंक्शन का निर्माण करने की आवश्यकता नहीं है, ठीक काम करें

आपको एक फ़ंक्शन बनाने की आवश्यकता है, लेकिन यह आपकी सुविधा के लिए है। यह सही काम करता है और मुझे कभी भी इस फ़ंक्शन के उपयोग से कोई दोषपूर्ण कम्प्यूटेशंस का सामना नहीं करना पड़ता।

 CREATE FUNCTION [dbo].[get_days](@date datetime) RETURNS int AS BEGIN SET @date = DATEADD(MONTH, 1, @date) DECLARE @result int = (select DAY(DATEADD(DAY, -DAY(@date), @date))) RETURN @result END 

यह कैसे काम करता है: तिथि से दिनांक का दिन संख्या घटाकर आपको पिछले महीने के आखिरी दिन देता है इसलिए, आपको दी गई तारीख को एक माह जोड़ने की आवश्यकता है, दिन की संख्या घटाएं और परिणाम का दिन घटक प्राप्त करें।

मैंने मेहरद को ऊपर उठाया, लेकिन यह भी काम करता है। 🙂

 CREATE function dbo.IsLeapYear ( @TestYear int ) RETURNS bit AS BEGIN declare @Result bit set @Result = cast( case when ((@TestYear % 4 = 0) and (@testYear % 100 != 0)) or (@TestYear % 400 = 0) then 1 else 0 end as bit ) return @Result END GO CREATE FUNCTION dbo.GetDaysInMonth ( @TestDT datetime ) RETURNS INT AS BEGIN DECLARE @Result int DECLARE @MonthNo int Set @MonthNo = datepart(m,@TestDT) Set @Result = case @MonthNo when 1 then 31 when 2 then case when dbo.IsLeapYear(datepart(yyyy,@TestDT)) = 0 then 28 else 29 end when 3 then 31 when 4 then 30 when 5 then 31 when 6 then 30 when 7 then 31 when 8 then 31 when 9 then 30 when 10 then 31 when 11 then 30 when 12 then 31 end RETURN @Result END GO 

मापना

 declare @testDT datetime; set @testDT = '2404-feb-15'; select dbo.GetDaysInMonth(@testDT) 

यहाँ एक और है…

 Select Day(DateAdd(day, -Day(DateAdd(month, 1, getdate())), DateAdd(month, 1, getdate()))) 

मुझे पता है कि यह सवाल पुराना है लेकिन मैंने सोचा कि मैं क्या साझा करूँगा जिसका मैं उपयोग कर रहा हूं।

 DECLARE @date date = '2011-12-22' /* FindFirstDayOfMonth - Find the first date of any month */ -- Replace the day part with -01 DECLARE @firstDayOfMonth date = CAST( CAST(YEAR(@date) AS varchar(4)) + '-' + CAST(MONTH(@date) AS varchar(2)) + '-01' AS date) SELECT @firstDayOfMonth 

तथा

 DECLARE @date date = '2011-12-22' /* FindLastDayOfMonth - Find what is the last day of a month - Leap year is handled by DATEADD */ -- Get the first day of next month and remove a day from it using DATEADD DECLARE @lastDayOfMonth date = CAST( DATEADD(dd, -1, DATEADD(mm, 1, FindFirstDayOfMonth(@date))) AS date) SELECT @lastDayOfMonth 

यदि आवश्यक हो तो एक महीने में उन दिनों की संख्या को प्राप्त करने के लिए उनको एक ही समारोह बनाने के लिए गठजोड़ किया जा सकता है।

 SELECT DAY(SUBDATE(ADDDATE(CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '-1'), INTERVAL 1 MONTH), INTERVAL 1 DAY)) 

अच्छा 'एन' सरल और किसी भी कार्य बनाने की आवश्यकता नहीं है

मेहरदद अफशरी का जवाब सबसे सटीक है, सामान्य से यह उत्तर औपचारिक गणितीय दृष्टिकोण पर आधारित है, जो कर्टिस मैकनेरो द्वारा अपने ब्लॉग https://cmcenroe.me/2014/12/05/days-in-month-formula.html में दिए गए हैं।

 DECLARE @date DATE= '2015-02-01' DECLARE @monthNumber TINYINT DECLARE @dayCount TINYINT SET @monthNumber = DATEPART(MONTH,@date ) SET @dayCount = 28 + (@monthNumber + floor(@monthNumber/8)) % 2 + 2 % @monthNumber + 2 * floor(1/@monthNumber) SELECT @dayCount + CASE WHEN @dayCount = 28 AND DATEPART(YEAR,@date)%4 =0 THEN 1 ELSE 0 END -- leap year adjustment 

नंबर प्राप्त करने के लिए एक महीने में हम एसईएल में सीधे दिन () का उपयोग कर सकते हैं।

SQL सर्वर 2005/2008 के लिए मेरे उत्तर के अंत में पोस्ट की गई लिंक का पालन करें

निम्नलिखित उदाहरण और परिणाम एसक्यूएल 2012 से हैं

 alter function dbo.[daysinm] ( @dates nvarchar(12) ) returns int as begin Declare @dates2 nvarchar(12) Declare @days int begin select @dates2 = (select DAY(EOMONTH(convert(datetime,@dates,103)))) set @days = convert(int,@dates2) end return @days end --select dbo.daysinm('08/12/2016') 

एसक्यूएल सर्वर एसएसएमएस में परिणाम

  (no column name) 1 31 

प्रक्रिया:

जब EOMONTH का उपयोग किया जाता है, जो भी दिनांक स्वरूप हम इसका इस्तेमाल करते हैं उसे एसक्यूएल-सर्वर के डेटटाइम प्रारूप में परिवर्तित किया जाता है। इसके बाद ईओएमटीएनटी () का डेट आउटपुट 2016-12-31 हो जाएगा जो कि साल 2016, महीना 12 और दिन के रूप में 31 है। यह आउटपुट जब दिन () में पारित हो जाता है तो यह आपको महीने में कुल दिन की गणना देता है।

अगर हम जाँच के तुरंत परिणाम प्राप्त करना चाहते हैं तो हम सीधे नीचे कोड चला सकते हैं,

 select DAY(EOMONTH(convert(datetime,'08/12/2016',103))) 

या

 select DAY(EOMONTH(convert(datetime,getdate(),103))) 

SQL सर्वर 2005/2008/2012 में काम करने के संदर्भ के लिए, कृपया निम्नलिखित बाहरी लिंक का पालन करें …

एसक्यूएल में एक महीने में दिनों की संख्या खोजें

पहले दिनांक = 1 दिन की तारीख (डीडी, -1 * डेटपेस्टर (डीडी, गेटडेट ()) + 1, गेटडेट ()), अंतिम_दिन = डेटेड (डीडी, -1 * डेटपेप्टर (डीडी, डेटएड (एमएम, 1, डॉटडेट ())) , डेटैड (मिमी, 1, गेटडेट ())), नो_ओफ़_डे = 1 + दिनांकित (डीडी, डेटेड (डीडी, -1 * डेटपेप्टर (डीडी, गेटडेट ()) + 1, गेटडेट ()), डेटेड (डीडी -1) * DatePart (दिन, DATEADD (मिमी, 1, getdate ())), DATEADD (मिमी, 1, getdate ())))

किसी तारीख को उस तारीख को प्रतिस्थापित करने के लिए उस दिन की तारीख को प्राप्त करें

किसी भी तिथि के लिए

 select DateDiff(Day,@date,DateAdd(month,1,@date)) 
 DECLARE @date nvarchar(20) SET @date ='2012-02-09 00:00:00' SELECT DATEDIFF(day,cast(replace(cast(YEAR(@date) as char)+'-'+cast(MONTH(@date) as char)+'-01',' ','')+' 00:00:00' as datetime),dateadd(month,1,cast(replace(cast(YEAR(@date) as char)+'-'+cast(MONTH(@date) as char)+'-01',' ','')+' 00:00:00' as datetime))) 

SQLServer2012 में सरल क्वेरी:

दिन का चयन करें (('20-05-1951 22:00:00'))

मैंने कई तिथियों के लिए परीक्षण किया और यह हमेशा एक सही परिणाम लौटाता है

 DECLARE @date DATETIME = GETDATE(); --or '12/1/2018' (month/day/year) SELECT EOMONTH ( @date ) AS 'This Month'; SELECT EOMONTH ( @date, 1 ) AS 'Next Month'; 

परिणाम: इस माह 2018-12-31

अगले महीने 201 9-01-31