आयु प्राप्त करें
किसी कारण से हम परियोजनाओं की एक बड़ी राशि पर समाप्त हो रहे हैं जहां तारीखों की तुलना की जाती है। इस समय के दौरान हमने इस डेटा की अखंडता को गति देने और सुनिश्चित करने के लिए कई कार्य विकसित किए हैं।
इसका कारण हमने यह बनाया कि एक ऐसी उम्र में काम करना जहाँ किसी का जन्म एक लीप वर्ष में हुआ हो, एक दिन के विचरण के साथ समाप्त हो सकता है। एक लीप वर्ष में, 29/02 को वर्ष का एक ही दिन 01/03 है।
हम दो तिथियों का उपयोग करते हैं, क्योंकि यह आपको उस समय का बैकडेट करने में सक्षम बनाता है जो आपको उम्र की आवश्यकता थी, (मृत्यु की तारीख की तरह), और वर्तमान तिथि में केवल डिफ़ॉल्ट यदि खाली छोड़ दिया गया है।
जैसा कि हम पहिया का फिर से आविष्कार करने में विश्वास नहीं करते हैं, हमने अपना कोड यहां छोड़ दिया है जो किसी के लिए भी उपयोगी हो सकता है। इसके लिए नीचे दिए गए द्वितीयक फ़ंक्शन की आवश्यकता होती है।
CREATE FUNCTION Dates.GetAge(@Date DATETIME2,@Until DATETIME2) RETURNS INT AS BEGINIF @Until IS NULL SET @Until=CONVERT(DATE,GETDATE())DECLARE @Age INT=DATEDIFF(YEAR,@Date,@Until)+(CASE WHEN DATEPART(DAYOFYEAR,@Date)>(DATEPART(DAYOFYEAR,@Until)+(CASE WHEN dbo.GetLeapYear(@Until)=1 AND DATEPART(DAYOFYEAR,@Until)>59 THEN -1 ELSE 0 END))THEN -1 ELSE 0 END)RETURN @AgeENDGO
SELECT Dates.GetAge('2011-02-28','2013-02-27'),Dates.GetAge('2011-02-28','2013-02-28'),Dates.GetAge('2011-02-28','2013-03-01'),Dates.GetAge('2011-02-28','2013-03-02')SELECT Dates.GetAge('2011-02-28','2012-02-27'),Dates.GetAge('2011-02-28','2012-02-28'),Dates.GetAge('2011-02-28','2012-02-29'),Dates.GetAge('2011-02-28','2012-03-01')SELECT Dates.GetAge('2012-02-28','2013-02-27'),Dates.GetAge('2012-02-28','2013-02-28'),Dates.GetAge('2012-02-28','2013-03-01'),Dates.GetAge('2012-02-28','2013-03-02')SELECT Dates.GetAge('2012-02-29','2013-02-27'),Dates.GetAge('2012-02-29','2013-02-28'),Dates.GetAge('2012-02-29','2013-03-01'),Dates.GetAge('2012-02-29','2013-03-02')
अब तक परीक्षण से कोई भी विसंगति सामने नहीं आई है, हालांकि कृपया हमें बताएं कि क्या आपको कोई मिल सकता है।