sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLで月の最後の日を取得する

    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   |
    +---------------------+--------------+

    1. リクエストはHTTPステータス401で失敗しました:Unauthorized IN SSRS

    2. PostgreSQL:Unixエポックから現在までに変換する方法は?

    3. これら2つの結合テーブルアプローチの違いは?

    4. PythonでのMongoEngineによるインデックス作成の処理