PostgreSQLで次のメソッドを使用して、特定の月の最初の日を返すことができます。
これは、当月の初日、または指定した日付に基づく月の初日である可能性があります。
月の最初の日を取得すると、月の初めに特定の日数を追加するなど、結果の日付についてさらに計算を実行できます。
今月の初め
今月の最初の日を返す例を次に示します。
SELECT date_trunc('month', now());
結果:
2022-04-01 00:00:00+10
これはPostgreSQLのdate_trunc()
を使用します 必要な結果を返す関数。この関数は、日付/時刻の値を指定された精度に切り捨てます。
この場合、now()
を使用します 現在の日付と'month'
を返す関数 引数はその日付を月の初めに変更します。
必要に応じて、日付値にキャストできます:
SELECT date_trunc('month', now())::date;
結果:
2022-04-01
ここでも、例を実行した実際の日付とともに、次のようになります。
SELECT
now()::date AS "Current Date",
date_trunc('month', now())::date AS "Start of Month";
結果:
+--------------+----------------+ | Current Date | Start of Month | +--------------+----------------+ | 2022-04-09 | 2022-04-01 | +--------------+----------------+
指定された月の始まり
今月の初めである必要はありません。任意の日付を指定でき、その日付に基づいて月の初めが返されます。
例:
SELECT date_trunc('month', date '2030-07-14')::date;
結果:
2030-07-01
その後、結果を使用して他のアクションを実行できます。たとえば、次のように結果に特定の日数を追加できます。
SELECT date_trunc('month', date '2030-07-14')::date + 20;
結果:
2030-07-21
データベースの例
データベースの日付を使用する例を次に示します。
SELECT
rental_date,
date_trunc('month', rental_date)::date AS "The 1st of the Month",
date_trunc('month', rental_date)::date + 19 AS "The 20th of the Month"
FROM rental WHERE customer_id = 459 LIMIT 10;
結果:
+---------------------+----------------------+-----------------------+ | rental_date | The 1st of the Month | The 20th of the Month | +---------------------+----------------------+-----------------------+ | 2005-05-24 22:54:33 | 2005-05-01 | 2005-05-20 | | 2005-06-17 02:50:51 | 2005-06-01 | 2005-06-20 | | 2005-06-17 09:38:22 | 2005-06-01 | 2005-06-20 | | 2005-06-17 16:40:33 | 2005-06-01 | 2005-06-20 | | 2005-06-20 02:39:21 | 2005-06-01 | 2005-06-20 | | 2005-06-20 12:35:44 | 2005-06-01 | 2005-06-20 | | 2005-06-20 12:42:00 | 2005-06-01 | 2005-06-20 | | 2005-06-21 02:39:44 | 2005-06-01 | 2005-06-20 | | 2005-07-06 00:22:29 | 2005-07-01 | 2005-07-20 | | 2005-07-08 02:51:23 | 2005-07-01 | 2005-07-20 | +---------------------+----------------------+-----------------------+