हम किसी महीने के अंतिम दिन को वापस करने के लिए PostgreSQL में निम्नलिखित तकनीक का उपयोग कर सकते हैं।
हमारे द्वारा निर्दिष्ट तिथि के आधार पर यह चालू माह का अंतिम दिन या महीने का अंतिम दिन हो सकता है।
चालू माह की समाप्ति
यहां एक उदाहरण दिया गया है जो चालू माह का अंतिम दिन लौटाता है:
SELECT (date_trunc('month', now()) + interval '1 month - 1 day');
परिणाम:
2022-04-30 00:00:00+10
यह PostgreSQL के date_trunc()
. का उपयोग करता है फ़ंक्शन, कुछ तारीख अंकगणित के साथ हम जो परिणाम चाहते हैं उसे वापस करने के लिए। यह फ़ंक्शन दिनांक/समय मान को एक निर्दिष्ट परिशुद्धता के लिए छोटा करता है।
इस मामले में मैं now()
. का उपयोग करता हूं वर्तमान तिथि, और 'month'
. को वापस करने के लिए कार्य करता है तर्क उस तारीख को महीने की शुरुआत में संशोधित करता है। फिर मैंने उसमें एक महीना जोड़ा (जो इसे अगले महीने की शुरुआत में लाता है), फिर उस तारीख से एक दिन घटाकर हमें पिछले महीने का अंत देने के लिए (जो कि चालू महीने का अंत है)।
यदि आवश्यक हो तो हम इसे दिनांक मान में डाल सकते हैं:
SELECT (date_trunc('month', now()) + interval '1 month - 1 day')::date;
परिणाम:
2022-04-30
यहाँ यह फिर से है, वास्तविक तिथि के साथ कि मैंने उदाहरण चलाया:
SELECT
now()::date AS "Current Date",
(date_trunc('month', now()) + interval '1 month - 1 day')::date AS "End of Month";
परिणाम:
+--------------+--------------+ | Current Date | End of Month | +--------------+--------------+ | 2022-04-09 | 2022-04-30 | +--------------+--------------+
एक निर्दिष्ट महीने की समाप्ति
यह चालू माह का अंत नहीं होना चाहिए। हम किसी भी तारीख को निर्दिष्ट कर सकते हैं, और यह उस तारीख के आधार पर महीने के अंत में वापस आ जाएगी।
उदाहरण:
SELECT (date_trunc('month', date '2030-07-14') + interval '1 month - 1 day')::date;
परिणाम:
2030-07-31
डेटाबेस उदाहरण
यहां एक उदाहरण दिया गया है जो डेटाबेस से तिथियों का उपयोग करता है:
SELECT
rental_date,
(date_trunc('month', rental_date) + interval '1 month - 1 day')::date AS "End of Month"
FROM rental WHERE customer_id = 459 LIMIT 10;
परिणाम:
+---------------------+--------------+ | rental_date | End of Month | +---------------------+--------------+ | 2005-05-24 22:54:33 | 2005-05-31 | | 2005-06-17 02:50:51 | 2005-06-30 | | 2005-06-17 09:38:22 | 2005-06-30 | | 2005-06-17 16:40:33 | 2005-06-30 | | 2005-06-20 02:39:21 | 2005-06-30 | | 2005-06-20 12:35:44 | 2005-06-30 | | 2005-06-20 12:42:00 | 2005-06-30 | | 2005-06-21 02:39:44 | 2005-06-30 | | 2005-07-06 00:22:29 | 2005-07-31 | | 2005-07-08 02:51:23 | 2005-07-31 | +---------------------+--------------+