メインコンテンツまでスキップ
バージョン: 26.x

ARRAY_RANGE

ファンクション

数値またはdatetimeの等差数列配列を生成します。

  • 数値型の場合、デフォルトのstepは1です
  • datetime型の場合、デフォルトのstepは1日です

Syntax

  • ARRAY_RANGE(end)
  • ARRAY_RANGE(start, end)
  • ARRAY_RANGE(start, end, step)
  • ARRAY_RANGE(start_dt, end_dt)
  • ARRAY_RANGE(start_dt, end_dt, interval step unit)

パラメータ

  • startend: 非負整数。endは上限値であり、結果から除外されます。
  • step: 正の整数である必要があります。ステップ長。デフォルトは1です。
  • start_dtend_dt: DATETIME。2つの引数形式では、デフォルトのstepは1 DAYです。
  • interval step unit: datetimeのstep。unitYEAR|QUARTER|MONTH|WEEK|DAY|HOUR|MINUTE|SECONDのいずれかです。stepは正の整数である必要があります。

Return value

  • ARRAY<T>を返します。不正な引数の場合はNULLを返し、空の範囲の場合は空の配列[]を返します。
  • 要素型Tは入力と一致します。整数はINTを生成し、datetimeはDATETIMEを生成します。

Usage notes

  • 数値シーケンス: startから開始し、stepずつ増加し、end未満まで(左閉右開区間)。
  • datetimeシーケンス: start_dtから開始し、指定されたunitstepずつ増加し、end_dt未満まで。2つの引数形式はinterval 1 dayと同等です。
  • 不正な引数はNULLを返します:
    • 数値: start < 0end < 0step <= 0
    • datetime: start_dtまたはend_dtが無効、またはstep <= 0
  • ARRAY_RANGESEQUENCEは同等です。

Examples

  • 数値: startのデフォルトは0、stepのデフォルトは1

    • ARRAY_RANGE(5) -> [0, 1, 2, 3, 4]
    • ARRAY_RANGE(0, 5) -> [0, 1, 2, 3, 4]
  • 数値: endは上限値であり、結果に含まれません。

    • ARRAY_RANGE(2, 6, 2) -> [2, 4]
    • ARRAY_RANGE(3, 3) -> []
  • 数値: endstart以上である必要があります。そうでない場合は[]を返します。

    • ARRAY_RANGE(3, 2) -> []
  • 数値: startendは非負整数である必要があり、stepは0より大きい必要があります。

    • ARRAY_RANGE(-1, 3) -> NULL
    • ARRAY_RANGE(1, 3, 0) -> NULL
  • datetime: stepのデフォルトは1日です。

    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-05-17 12:00:00') -> ['2022-05-15 12:00:00', '2022-05-16 12:00:00']
    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-05-17 12:00:00', interval 1 day) -> ['2022-05-15 12:00:00', '2022-05-16 12:00:00']
  • datetime: unitYEAR|QUARTER|MONTH|WEEK|DAY|HOUR|MINUTE|SECONDのいずれかです。

    • ARRAY_RANGE('2022-05-15 12:00:00', '2024-05-17 12:00:00', interval 1 year) -> ["2022-05-15 12:00:00", "2023-05-15 12:00:00"]
    • ARRAY_RANGE('2022-05-15 12:00:00', '2023-05-17 12:00:00', interval 1 quarter); -> ["2022-05-15 12:00:00", "2022-08-15 12:00:00", "2022-11-15 12:00:00", "2023-02-15 12:00:00"]
    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-07-17 12:00:00', interval 1 month); -> ["2022-05-15 12:00:00", "2022-06-15 12:00:00"]
    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-05-17 12:00:00', interval 1 day) -> ['2022-05-15 12:00:00', '2022-05-16 12:00:00']
    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-05-15 14:00:00', interval 1 hour) -> ["2022-05-15 12:00:00", "2022-05-15 13:00:00"]
    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-05-15 12:02:00', interval 1 minute) -> ["2022-05-15 12:00:00", "2022-05-15 12:01:00"]
    • ARRAY_RANGE('2022-05-15 12:00:00', '2022-05-15 12:00:02', interval 1 second) -> ["2022-05-15 12:00:00", "2022-05-15 12:00:01"]