की गणना करने के लिए फ़ंक्शन मैं एक फ़ंक्शन लिखने की कोशिश कर रहा हूं जहां मुझे getdate() के बजाय रिकॉर्ड डालने की तिथि के आधार पर आयु मिल सकती है। मैं उस उपयोगकर्ता को फ़िल्टर करना चाहता हूं जो पंजीकृत होने पर 18 साल से कम हो। यदि मैं इसे एक वर्ष के बाद पूछता हूं, तो उसे अभी भी उपयोगकर्ता को वर्तमान दिनांक की तुलना में रिकॉर्ड डालने की तारीख के आधार पर 17 के रूप में दिखाना चाहिए। मैंने यही लिखा है लेकिन यह अभी भी रिकॉर्ड डालने की तारीख की तुलना में वर्तमान तिथि के आधार पर उम्र दे रहा है। कोई सुझाव वास्तव में सहायक होगा। आपउम्र
--InputDate as DateOfBirth
--InsertDate as date the record was inserted
CREATE FUNCTION [dbo].[FindAge] (@InputDate int, @Insertdate datetime)
RETURNS int
AS
BEGIN
DECLARE @Age as Int
DECLARE @d DATETIME
SET @d = CONVERT(DATETIME, CONVERT(VARCHAR(8), @InputDate), 112)
SELECT @Age=DATEDIFF(year, @d, @Insertdate)
- CASE WHEN DATEADD(year, DATEDIFF(year, @d, @Insertdate), @d) <= GetDate()
THEN 0 ELSE 1 END
RETURN @Age
END
---- Drop Obselete procs
GO
अद्यतन बाद बेकन बिट सुझाव की सराहना करते हैं और यह पूरी तरह से बाहर काम किया।
यहां आप यहां जाएं: http://stackoverflow.com/questions/1572110/how-to-calculate-age-in-years-based-on-date-of-birth-and-getdate – CodeLikeBeaker
त्वरित नज़र के बाद, ऐसा लगता है * काम * करना चाहिए। शायद '@ इनपुटडेट' पैरामीटर में गलत मान है? –
मेरा कोड पहले से ही गेटडेट पर आधारित आयु प्राप्त करता है लेकिन मुझे बनाई गई उम्र के आधार पर उम्र चाहिए और मैंने सोचा कि मैंने जो कोड पोस्ट किया है उसे इसे संभालना चाहिए, लेकिन फिर भी यह गेटेट() के आधार पर उम्र की गणना कर रहा है। – user2908229