メインコンテンツまでスキップ
に最終更新

QUARTER_FLOOR

説明​

DATE、DATETIME、TIMESTAMP_NS、または TIMESTAMPTZ の値を、指定した四半期周期における、その値以前で最も近い境界まで切り下げます。基準時刻を指定した場合は、その時刻を基準に周期を計算します。

構文​

QUARTER_FLOOR(<datetime>)
QUARTER_FLOOR(<datetime>, <origin>)
QUARTER_FLOOR(<datetime>, <period>)
QUARTER_FLOOR(<datetime>, <period>, <origin>)

パラメータ​

パラメータ説明
<datetime>切り下げる値。DATE、DATETIME、TIMESTAMP_NS、TIMESTAMPTZ をサポートします。
<period>省略可能。四半期単位の周期。型は INT で、各周期に含まれる四半期の数を表します。
<origin>省略可能。周期の開始基準点。DATE、DATETIME、TIMESTAMP_NS、TIMESTAMPTZ をサポートします。デフォルトは 0001-01-01 00:00:00 です。

注意事項:

  • 周期を指定しない場合、周期に 1 四半期を指定した場合と同じです。
  • 周期が正の整数でない場合、関数は NULL を返します。
  • 結果は常に過去方向へ切り下げられます。
  • 戻り値の時刻部分は常に 00:00:00 です。

戻り値​

TIMESTAMP_NS を入力すると、小数秒が固定の九桁精度の TIMESTAMP_NS を返します。結果が戻り値の型の範囲内にあるか検証されます。TIMESTAMP_NS の範囲は [1677-09-21 00:12:43.145224192, 2262-04-11 23:47:16.854775807] です。

<origin> を省略した TIMESTAMP_NS 入力では、記載されているデフォルトの基準時刻は内部的な周期の位置合わせにのみ使用され、TIMESTAMP_NS に格納可能な範囲内にある必要はありません。

<datetime> が DATE 型の場合、戻り値の型は DATE です。 <datetime> が DATETIME 型の場合、戻り値の型は DATETIME です。 <datetime> が TIMESTAMP_NS 型の場合、戻り値の型は小数秒九桁の TIMESTAMP_NS です。 <datetime> が TIMESTAMPTZ 型の場合、戻り値の型は TIMESTAMPTZ です。 結果の時刻部分は 00:00:00 に設定されます。

例​

'0001-01-01 00:00:00' を起点とし、それぞれ 5 四半期と 4 四半期を周期として、入力日時に最も近い周期の開始時点を返します。

SELECT QUARTER_FLOOR("2023-07-13 22:28:18", 5), QUARTER_FLOOR("2023-07-13 22:28:18", 4);
+-----------------------------------------+-----------------------------------------+
| QUARTER_FLOOR("2023-07-13 22:28:18", 5) | QUARTER_FLOOR("2023-07-13 22:28:18", 4) |
+-----------------------------------------+-----------------------------------------+
| 2021-01-01 00:00:00 | 2022-01-01 00:00:00 |
+-----------------------------------------+-----------------------------------------+

'2022-01-01 00:00:00' を周期の開始基準点とし、それぞれ 2 四半期と 4 四半期を周期として、入力日時に最も近い周期の開始時点を返します。

SELECT QUARTER_FLOOR("2023-03-13 22:28:18", 2, "2022-01-01 00:00:00"), QUARTER_FLOOR("2023-07-13 22:28:18", 4, "2022-01-01 00:00:00");
+----------------------------------------------------------------+----------------------------------------------------------------+
| QUARTER_FLOOR("2023-03-13 22:28:18", 2, "2022-01-01 00:00:00") | QUARTER_FLOOR("2023-07-13 22:28:18", 4, "2022-01-01 00:00:00") |
+----------------------------------------------------------------+----------------------------------------------------------------+
| 2023-01-01 00:00:00 | 2022-01-01 00:00:00 |
+----------------------------------------------------------------+----------------------------------------------------------------+

ベストプラクティス​

date_floor も参照してください。