PostgreSQLでは、date_trunc()
関数は、日付/時刻の値を指定された精度で切り捨てます。
また、指定されたタイムゾーンで指定された精度に値を切り捨てることもできます。
これは、trunc()
の日付バージョンと考えることができます。 関数(数値を切り捨てます)。
構文
構文は次のようになります:
date_trunc(field, source [, time_zone ])
場所:
field
入力値を切り捨てる精度です(例:month
、hour
、など)。この引数の許容値の完全なリストについては、以下を参照してください。source
タイプタイムスタンプの値式です 、タイムゾーン付きのタイムスタンプ 、または間隔 。タイプ日付の値に注意してください および時間 タイムスタンプに自動的にキャストされます または間隔 それぞれ。- オプションの
time_zone
別のタイムゾーンを指定するために引数を指定できます。
field
引数は次のいずれかになります:
- マイクロ秒
- ミリ秒
- 秒
- 分
- 時間
- 日
- 週
- 月
- 四半期
- 年
- 10年
- 世紀
- ミレニアム
基本的な例
実例を示します。
SELECT date_trunc('hour', timestamp '2020-06-30 17:29:31');
結果:
2020-06-30 17:00:00
日付の時間部分が17:29:31
から切り捨てられていることがわかります 17:00:00
へ 。 hour
を使用したためです 最初の引数について。
ここでは、最初の引数の値が異なります。
\x
SELECT
date_trunc('minute', timestamp '2020-06-30 17:29:31'),
date_trunc('day', timestamp '2020-06-30 17:29:31'),
date_trunc('month', timestamp '2020-06-30 17:29:31'),
date_trunc('year', timestamp '2020-06-30 17:29:31');
結果(垂直出力を使用):
date_trunc | 2020-06-30 17:29:00 date_trunc | 2020-06-30 00:00:00 date_trunc | 2020-06-01 00:00:00 date_trunc | 2020-01-01 00:00:00
この場合、私は\x
を使用しました 拡大表示/垂直出力を有効にして、結果を読みやすくします。
タイムゾーンあり
WITH TIME ZONE
を示す例を次に示します。 オプション。
SELECT
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+00'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+01');
結果:
date_trunc | 2020-07-01 03:00:00+10 date_trunc | 2020-07-01 02:00:00+10
これらの例を実行したときのローカルタイムゾーンはオーストラリア/ブリスベンでした。
3番目の引数として完全なタイムゾーン名を追加することもできます。
SELECT
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland'),
date_trunc('hour', timestamp with time zone '2020-06-30 17:29:31+12', 'Pacific/Auckland');
結果:
date_trunc | 2020-06-30 15:00:00+10 date_trunc | 2020-06-30 15:00:00+10
間隔あり
日付の代わりに間隔値を使用する例を次に示します。
SELECT date_trunc('hour', interval '7 days 5 hours 15 minutes');
結果:
7 days, 5:00:00