このセクションでは、PostgreSQL の DATE_TRUNC() 関数の使用方法を学習します。 DATE_TRUNC() 関数は、日付またはタイムスタンプを指定された精度レベルに切り捨てるために使用されます。これにより、日付またはタイムスタンプを年、四半期、月、週、日、時間などの特定のunitに切り捨てることができます。
Postgresql の DATE_TRUNC() 関数の構文:
DATE_TRUNC(unit、source)
unit:日付またはタイムスタンプを切り捨てるunitを指定します (例: 「年」、「四半期」、「月」、「週」、「日」、「時間」など)。
source:T切り捨てる日付またはタイムスタンプ。
unitの値は次のいずれかの値である必要があります。
- century
- decade
- year
- month
- day
- hour
- minute
- second
- microseconds
- milliseconds
PostgreSQL TRUNC() 関数の例
以下は、postgresql の TRUNC() 関数の例の一部です。
- タイムスタンプを年初に切り捨てる: postgresql の TRUNC() 関数:
以下の例では、年日付またはタイムスタンプを年の初めに切り捨てるために、 を「unit」引数として、タイムスタンプを「source」引数として指定します。
SELECT DATE_TRUNC('year', '2024-02-24 15:30:45'::timestamp) AS truncated_date;
これにより、タイムスタンプは2024年の初めに切り捨てられます。
出力:

- タイムスタンプを月の初めに切り捨てる: postgresql の TRUNC() 関数:
以下の例では、月を「unit」引数として、タイムスタンプを「source」引数として指定すると、日付またはタイムスタンプが日付に記載されている月の初めに切り捨てられます。
SELECT DATE_TRUNC('month', '2024-02-24 15:30:45'::timestamp) AS truncated_date;
これにより、タイムスタンプは2024年2月の初めに切り捨てられます。
出力:

- タイムスタンプを週の初めに切り捨てる: postgresql の TRUNC() 関数:
以下の例では、週日付またはタイムスタンプを日付に記載されている週の初めに切り捨てるために、 を「unit」引数として、タイムスタンプを「source」引数として指定します。
SELECT DATE_TRUNC('week', '2024-02-24 15:30:45'::timestamp) AS truncated_date;
これにより、タイムスタンプは指定された日付の週の初めに切り捨てられます。
出力:

- タイムスタンプを最も近い時間に切り捨てます: postgresql の TRUNC() 関数:
以下の例では、時間を「unit」引数として、タイムスタンプを「source」引数として指定すると、日付またはタイムスタンプが指定された日付の最も近い時間に切り捨てられます。
SELECT DATE_TRUNC('hour', '2024-02-24 15:30:45'::timestamp) AS truncated_date;
これにより、指定された日付のタイムスタンプが最も近い時間に切り捨てられます。
出力:

- タイムスタンプを四半期の初めに切り捨てる: postgresql の TRUNC() 関数:
以下の例では、四半期指定された日付の四半期の初めに日付またはタイムスタンプを切り捨てるために、日付を「unit」引数として、タイムスタンプを「source」引数として指定します。
SELECT DATE_TRUNC('quarter', '2024-02-24 15:30:45'::timestamp) AS truncated_date;
これにより、タイムスタンプが四半期の初めに切り捨てられます。
出力:

- タイムスタンプを10年の初めに切り捨てる: postgresql の TRUNC() 関数:
以下の例では、十年を「unit」引数として、タイムスタンプを「source」引数として指定すると、指定された日付の 10 年目の初めに日付またはタイムスタンプが切り捨てられます。
SELECT DATE_TRUNC('decade', '2024-02-24'::date) AS truncated_date;
これにより、タイムスタンプが10年目の初めに切り捨てられます。
出力:

- タイムスタンプを一日の初めに切り捨てる: postgresql の TRUNC() 関数:
以下の例では、日指定された日付の 1 日の初めに日付またはタイムスタンプを切り捨てるために、 を「unit」引数として、 timestamp を「source」引数として指定します。
SELECT DATE_TRUNC('day', '2024-02-24'::date) AS truncated_date;
これにより、タイムスタンプが1日の初めに切り捨てられます。
出力:
