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

PostgreSQLで週の開始日と終了日の文字列を取得するにはどうすればよいですか?

    date_trunc('week', ...)

    例:

    SELECT date_trunc('week', '2012-07-25 22:24:22'::timestamp);
    -> 2012-07-23 00:00:00
    

    次に、開始時刻に関心がない場合は、これを日付に変換できます。

    終了日も取得するには:

    SELECT    date_trunc('week', '2012-07-25 22:24:22'::timestamp)::date
       || ' '
       || (date_trunc('week', '2012-07-25 22:24:22'::timestamp)+ '6 days'::interval)::date;
    
    -> 2012-07-23 2012-07-29
    

    (ここではデフォルトのフォーマットを使用しました。もちろん、MM / DD / YYYYを使用するようにこれを適応させることができます。)

    (date_trunc('week', ...) + '6 days'::intervalを使用する代わりに、タイムスタンプを比較する場合は注意してください。 、1週間全体を追加し、週末の厳密な比較を使用することをお勧めします。

    これはyを除外します 週の最後の日のタイムスタンプ(カットオフ時間はその日の深夜であるため)。

        date_trunc('week', x)::date <= y::timestamp
    AND y::timestamp <= (date_trunc('week', x) + '6 days'::interval)::date
    

    これにはそれらが含まれます:

        date_trunc('week', x)::date <= y::timestamp
    AND y::timestamp < (date_trunc('week', x) + '1 week'::interval)
    

    (これは、date_truncを使用できないまれなケースです。 yに 直接。)

    週が日曜日に始まる場合は、date_trunc('week', x)::dateを置き換えます with date_trunc('week', x + '1 day'::interval)::date - '1 day'::interval 動作するはずです。



    1. MySQLの不正な日時値: '0000-00-00 00:00:00'

    2. データベースに依存せずにスプリングブートアプリを起動するにはどうすればよいですか?

    3. Python:MySQLに接続してクエリを実行するためのベストプラクティスと最も安全な方法

    4. 親子フォームの順序なしリストphpで階層データを印刷しますか?