कोशिश करें:
date_part('year',age(coalesce(d1,current_date), d2))::int;
age(d1,d2)
फ़ंक्शन निम्न प्रारूप में दो तिथियों के बीच वर्षों, महीनों और दिनों की संख्या देता है:
xxx year(s) xxx mon(s) xxx day(s).
इस आउटपुट से date_part()
. का उपयोग करके केवल वर्ष का अंतर चुनने के लिए। और NULL
को हैंडल करने के लिए if स्टेटमेंट डालने की भी जरूरत नहीं है जैसा कि मैंने coalesece
added जोड़ा है जो पहले देता है NON Null
मान, तो यदि d1
NULL
है यह cuurent_date
लौटाता है
कार्य संरचना:
CREATE OR REPLACE FUNCTION diff(d1 date,d2 date) RETURNS int AS $$
BEGIN
RETURN date_part('year',age(coalesce(d1,current_date), d2))::int;
END
$$ language plpgsql;
फंक्शन कॉल:
select * from diff(null,'2010-04-01');
select * from diff('2012-10-01','2010-04-01');