Postgres में, age()
फ़ंक्शन दो टाइमस्टैम्प या दिनांक चर के आधार पर आयु देता है।
परिणाम केवल दिनों के बजाय वर्षों और महीनों का उपयोग करके लौटाया जाता है।
उदाहरण के लिए, एक परिणाम इस तरह दिख सकता है:3 साल 2 महीने 30 दिन ।
सिंटैक्स
आप निम्न दो सिंटैक्स में से किसी एक का उपयोग कर सकते हैं:
age(timestamp)
age(timestamp, timestamp)
पहला वाला वर्तमान तिथि के आधार पर आयु लौटाता है। विशेष रूप से, यह current_date()
. से घटाता है (मध्यरात्रि में)।
दूसरा सिंटैक्स आपको दो स्पष्ट तिथियों के आधार पर तिथि प्राप्त करने की अनुमति देता है। इस सिंटैक्स का उपयोग करने से दूसरी तारीख को पहले से घटाया जाता है। दूसरे शब्दों में, उम्र आज की तारीख पर आधारित नहीं है - यह पहले तर्क में दी गई तारीख पर आधारित है।
उदाहरण 1 - आज की तारीख का उपयोग करें
पहला सिंटैक्स प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT age(timestamp '1987-03-14');
परिणाम:
33 years 2 mons 30 days
इस मामले में, मैंने एक ही तर्क दिया। age()
फ़ंक्शन ने फिर घटा दिया कि आज की तारीख से (जिस तारीख को मैंने क्वेरी चलाई थी) और हमें परिणाम मिलता है।
बस इसे और प्रदर्शित करने के लिए, यह फिर से है, लेकिन इस बार current_date()
. के साथ मेरे द्वारा क्वेरी चलाने की तिथि दिखाने के लिए।
SELECT
current_date,
age(timestamp '1987-03-14');
परिणाम:
current_date | age --------------+------------------------- 2020-06-13 | 33 years 2 mons 30 days
उदाहरण 2 - एक कस्टम तिथि का उपयोग करें
इस उदाहरण में, मैं दो तिथियां प्रदान करता हूं जिनके साथ तुलना करना है। इसलिए, उम्र आज की तारीख पर आधारित नहीं है। यह age()
. को प्रदान की गई पहली तारीख पर आधारित है समारोह।
SELECT age(timestamp '2001-01-01', timestamp '2000-03-14');
परिणाम:
9 mons 18 days
इस मामले में, आयु एक वर्ष से कम है और इसलिए परिणामों में वर्ष का उल्लेख नहीं किया गया है।
यहां एक और उदाहरण दिया गया है जो दिखाता है कि क्या होता है यदि केवल वर्ष बदलता है (यानी दो तिथियों के महीने और दिन के हिस्से बिल्कुल समान हैं, लेकिन वर्ष अलग है)।
SELECT age(timestamp '2007-01-01', timestamp '2000-01-01');
परिणाम:
7 years
तो फिर, यह केवल उन हिस्सों को छोड़ देता है जो प्रासंगिक नहीं हैं (इस मामले में महीने और दिन)।
उदाहरण 3 - समान तिथियां
अगर दोनों तारीखें एक जैसी हैं, तो यहां बताया गया है कि क्या होता है।
SELECT age(timestamp '2001-01-01', timestamp '2001-01-01');
परिणाम:
00:00:00
उदाहरण 4 - नकारात्मक आयु
अगर दूसरी तारीख पहली तारीख के बाद की है, तो आपकी उम्र नकारात्मक हो जाती है।
SELECT age(timestamp '2001-01-01', timestamp '2002-03-07');
परिणाम:
-1 years -2 mons -6 days
यहां ऋण चिह्न दिनांक के सभी घटकों (अर्थात वर्ष, माह और दिनों के घटकों) के साथ जोड़ा जाता है।
उदाहरण 5 - आयु वर्षों में
यदि आप केवल वर्षों में आयु चाहते हैं, तो आप extract()
. का उपयोग कर सकते हैं या date_part()
age()
. से वर्ष निकालने के लिए फ़ंक्शन का रिटर्न मान।
यहां एक उदाहरण दिया गया है जो extract()
. का उपयोग करता है समारोह:
SELECT extract(year from age(timestamp '1997-10-25'));
परिणाम:
22.0
जब मैं इसे Azure डेटा स्टूडियो में चलाता हूं तो यह ऐसा दिखाई देता है।
जब मैं इसे psql . में चलाता हूं , मुझे यह मिलता है:
22
दोनों extract()
और date_part()
डबल सटीक डेटा प्रकार का उपयोग करके अपने परिणाम लौटाएं।
यदि आवश्यक हो, तो आप इसे ::int
के साथ जोड़कर एक पूर्णांक (या अन्य डेटा प्रकार) में बदल सकते हैं ।
SELECT extract(year from age(timestamp '1997-10-25'))::int;
परिणाम:
22