array_range

SinceVersion 1.2.0

array_range

description

Syntax

  1. ARRAY<Int> array_range(Int end)
  2. ARRAY<Int> array_range(Int start, Int end)
  3. ARRAY<Int> array_range(Int start, Int end, Int step)
  4. ARRAY<Datetime> array_range(Datetime start_datetime, Datetime end_datetime)
  5. ARRAY<Datetime> array_range(Datetime start_datetime, Datetime end_datetime, INTERVAL Int interval_step UNIT)
  1. To generate array of int: The parameters are all positive integers. start default value is 0, and step default value is 1. Return the array which numbers from start to end - 1 by step.

  2. To generate array of datetime: At least taking two parameters. The first two parameters are all datetimev2, the third is positive integer. If the third part is missing, INTERVAL 1 DAY will be default value. UNIT supports YEAR/MONTH/WEEK/DAY/HOUR/MINUTE/SECOND. Return the array of datetimev2 between start_datetime and closest to end_datetime by interval_step UNIT.

notice

if the 3rd parameter step/interval_step is negative or zero, the function will return NULL

example

  1. mysql> select array_range(10);
  2. +--------------------------------+
  3. | array_range(10) |
  4. +--------------------------------+
  5. | [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
  6. +--------------------------------+
  7. mysql> select array_range(10,20);
  8. +------------------------------------------+
  9. | array_range(10, 20) |
  10. +------------------------------------------+
  11. | [10, 11, 12, 13, 14, 15, 16, 17, 18, 19] |
  12. +------------------------------------------+
  13. mysql> select array_range(0,20,2);
  14. +-------------------------------------+
  15. | array_range(0, 20, 2) |
  16. +-------------------------------------+
  17. | [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] |
  18. +-------------------------------------+
  19. mysql> select array_range(cast('2022-05-15 12:00:00' as datetimev2(0)), cast('2022-05-17 12:00:00' as datetimev2(0))) AS array_range_default;
  20. +------------------------------------------------+
  21. | array_range_default |
  22. +------------------------------------------------+
  23. | ["2022-05-15 12:00:00", "2022-05-16 12:00:00"] |
  24. +------------------------------------------------+
  25. mysql> select array_range(cast('2019-05-15 12:00:00' as datetimev2(0)), cast('2022-05-17 12:00:00' as datetimev2(0)), interval 2 year) as array_range_2_year;
  26. +------------------------------------------------+
  27. | array_range_2_year |
  28. +------------------------------------------------+
  29. | ["2019-05-15 12:00:00", "2021-05-15 12:00:00"] |
  30. +------------------------------------------------+

keywords

ARRAY, RANGE, ARRAY_RANGE