例:
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
動作するはずです。