मैं कैसे जांचूं कि एक वर्ष लीप वर्ष है या नहीं?लीप वर्ष के लिए जाँच करें
declare @year int
set @year = 1968
SELECT CASE WHEN @YEAR = <LEAPYEAR> THEN 'LEAP YEAR' ELSE 'NORMAL YEAR' END
अपेक्षित परिणाम:
LEAP YEAR
मैं कैसे जांचूं कि एक वर्ष लीप वर्ष है या नहीं?लीप वर्ष के लिए जाँच करें
declare @year int
set @year = 1968
SELECT CASE WHEN @YEAR = <LEAPYEAR> THEN 'LEAP YEAR' ELSE 'NORMAL YEAR' END
अपेक्षित परिणाम:
LEAP YEAR
29 वें फरवरी को जांच:
मैं इस कोड है
CASE WHEN ISDATE(CAST(@YEAR AS char(4)) + '0229') = 1 THEN 'LEAP YEAR' ELSE 'NORMAL YEAR' END
या का उपयोग निम्नलिखित नियम
CASE WHEN (@YEAR % 4 = 0 AND @YEAR % 100 <> 0) OR @YEAR % 400 = 0 THEN 'LEAP YEAR'...
लीप वर्ष गणना:
(@year % 4 = 0) and (@year % 100 != 0) or (@year % 400 = 0)
जब यह सच है, तो यह एक लीप वर्ष है। या यह मामला बयान में डाल करने के लिए
select case when
(
(@year % 4 = 0) and (@year % 100 != 0) or
(@year % 400 = 0)
) then 'LEAP' else 'USUAL' end
;
यह अभिव्यक्ति कभी भी सच नहीं हो सकती है ... – gbn
ने एक अपडेट किया है जैसा आपने अपने अपडेट किए गए उत्तर में किया था। मैं इसे साबित करने के लिए एसक्यूएल में बस परीक्षण कर रहा था। तो हम दोनों ने एक ही गणना के साथ उत्तर दिया। –
मैं एक बेहतर समाधान
CREATE FUNCTION dbo.IsLeapYear(@year INT)
RETURNS BIT AS
BEGIN
DECLARE @d DATETIME,
@ans BIT
SET @d = CONVERT(DATETIME,'31/01/'+CONVERT(VARCHAR(4),@year),103)
IF DATEPART(DAY,DATEADD(MONTH,1,@d))=29 SET @ans=1 ELSE SET @ans=0
RETURN @ans
END
GO
select
CASE
WHEN result = 0 THEN 'Leap_Year'
WHEN result <> 0 THEN 'Not_A_Leap_Year'
END
from(select mod((EXTRACT(YEAR FROM DATE '2013-08-23')), 4) result FROM DUAL);
यह एसक्यूएल-सर्वर नहीं है और पीछे गणित गलत है –
परीक्षण मॉड्यूल 4 पर्याप्त नहीं है। यहां देखें: [http://stackoverflow.com/a/725111/818827 ](httpoverflow.com/a/725111/818827) –
select decode(mod(&n,4),0,'leap year' ,'not a leapyear') as CHECK_LEAPYEAR from dual
इस दोस्तों को आजमाएं, इसका सरल –
हां, बहुत जटिल नहीं –
यह नहीं है एसक्यूएल-सर्वर और गणित पीछे गलत है –
उपयोग करने के लिए स्वतंत्र लग रहा है है यह भी मदद कर सकता है
DECLARE @year INT = 2012
SELECT IIF(DAY(EOMONTH(DATEFROMPARTS(@year,2,1))) = 29,1,0)
Result: 1 --(1 if Leap Year, 0 if not)
SELECT IIF(DAY(EOMONTH(DATEFROMPARTS(@year,2,1))) = 29,'Leap year','Not Leap year')
Result: Leap year
फाई आरएसटी शानदार है! – Alex
बिल्कुल मुझे क्या चाहिए, धन्यवाद! – Lexi847942