PostgreSQLで次の手法を使用して、特定の月の最終日を返すことができます。
これは、当月の最終日、または指定した日付に基づく月の最終日である可能性があります。
今月末
今月の最終日を返す例を次に示します。
SELECT (date_trunc('month', now()) + interval '1 month - 1 day');
結果:
2022-04-30 00:00:00+10
これはPostgreSQLのdate_trunc()
を使用します 関数と、必要な結果を返すための日付演算。この関数は、日付/時刻の値を指定された精度に切り捨てます。
この場合、now()
を使用します 現在の日付と'month'
を返す関数 引数は、その日付を月の初めに変更します。次に、それに1か月を加算し(翌月の初めになります)、その日付から1日を引いて、前月の終わり(今月の終わり)を求めます。
必要に応じて、日付値にキャストできます:
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 | +---------------------+--------------+