समस्या:
आप PostgreSQL में दिनांक या टाइमस्टैम्प कॉलम से वर्ष का दिन प्राप्त करना चाहते हैं।
उदाहरण:
हमारे डेटाबेस में software_sale
कॉलम में डेटा के साथ id
, software
, और sale_date
।
आईडी | सॉफ्टवेयर | <थ>बिक्री_तिथि|
---|---|---|
1 | सुपर गेम X | 2019-09-15 |
2 | ब्राउज़र X | 2019-10-15 |
3 | DB समाचार | 2019-11-26 |
4 | माईपेंटसॉफ्ट | 2018-10-15 |
5 | नया OS | 2019-10-15 |
आइए वर्ष के दिनों में बेचे जाने वाले सॉफ़्टवेयर आइटमों की संख्या गिनें। हम इसका उपयोग यह पता लगाने के लिए करेंगे कि वर्ष के कौन से दिन (वास्तविक वर्ष से स्वतंत्र) बिक्री उच्च या निम्न थी।
समाधान 1:
हम DATE_PART()
. का उपयोग करेंगे समारोह। यहां वह प्रश्न है जो आप लिखेंगे:
SELECT DATE_PART('doy',sale_date) AS day_of_year, COUNT(id) as count FROM software_sale GROUP BY day_of_year;
ये रहा क्वेरी का नतीजा:
दिन_वर्ष | <थ>गिनती|
---|---|
258 | 1 |
288 | 3 |
330 | 1 |
चर्चा:
PostgreSQL DATE_PART()
का उपयोग करें दिनांक/समय/डेटाटाइम/टाइमस्टैम्प कॉलम से वर्ष के दिन की संख्या पुनर्प्राप्त करने के लिए कार्य करें। यह फ़ंक्शन दो तर्क लेता है। पहला तर्क दिनांक भाग (या समय भाग) है जिसे आप फ़ंक्शन को वापस करना चाहते हैं। इस उदाहरण में, हम 'doy
. का उपयोग कर रहे हैं ', जो वर्ष का दिन लौटाता है। आप अन्य भागों का उपयोग कर सकते हैं, जैसे दिन, वर्ष, माह, घंटा, मिनट, सप्ताह, आदि। आप PostgreSQL दस्तावेज़ीकरण में अधिक जान सकते हैं।
दूसरा तर्क वह दिनांक/समय/डेटाटाइम/टाइमस्टैम्प है जिसे आप दिनांक/समय भाग से निकालना चाहते हैं। यह दिनांक/समय/डेटाटाइम/टाइमस्टैम्प मान या दिनांक/समय/डेटाटाइम/टाइमस्टैम्प कॉलम का नाम लौटाने वाला एक अभिव्यक्ति हो सकता है। (हमारे उदाहरण में, यह तारीख . का कॉलम है डेटा प्रकार।)
फ़ंक्शन DATE_PART()
'doy
. के साथ पहचानकर्ता एक पूर्णांक के रूप में वर्ष के दिन की संख्या (1 से 365/366 तक) देता है। हमारे उदाहरण में, बिक्री तिथि के वर्ष का दिन (sale_date
. से) कॉलम) अब एक नए कॉलम में प्रदर्शित होता है, day_of_year
. 15 अक्टूबर 2019 और 2018 में 288वां दिन था; उस दिन दो वर्षों में, कुल तीन बिक्री हुई (2019 में 2, 2018 में 1)।
हम COUNT()
. का उपयोग करते हैं बिक्री की संख्या की गणना करने के लिए कुल कार्य। यह फ़ंक्शन एक तर्क लेता है; इस मामले में, यह सॉफ्टवेयर आईडी नंबर है। हमें GROUP BY
. की भी आवश्यकता है वर्ष के दिन के अनुसार समूह रिकॉर्ड के लिए इस प्रश्न में खंड। (हमारे उदाहरण में, वास्तविक तर्क day_of_year
. है , DATE_PART('doy',sale_date)
. के लिए उपनाम ।)
यह वर्ष का दिन प्राप्त करने का एकमात्र तरीका नहीं है। हम EXTRACT()
. का भी उपयोग कर सकते हैं समारोह।
समाधान 2:
यहां वह क्वेरी है जिसे आप EXTRACT()
. के साथ लिखेंगे समारोह:
SELECT EXTRACT('doy' FROM sale_date) AS day_of_year, COUNT(id) as count FROM software_sale GROUP BY day_of_year;
यह फ़ंक्शन DATE_PART()
के समान है . अंतर यह है कि हम दिनांक भाग पहचानकर्ता और दिनांक और समय तर्क के बीच अल्पविराम के बजाय FROM का उपयोग करते हैं। नतीजा वही है। नोट:EXTRACT()
SQL मानक है।