Создайте таблицу с 15-минутным интервалом по дате и времени в Snowflake

Я пытаюсь создать таблицу в Snowflake с интервалом 15 минут. Я пробовал с генератором, но это не дает в интервале 15 минут. Есть ли какая-либо функция, которую я могу использовать для создания и построения этой таблицы с данными за пару лет.

Такие как

ДатаЧас
202-03-2902:00
202-03-2902:15
202-03-2902:30
202-03-2902:45
202-03-2903:00
202-03-2903:15
.................
.................

Спасибо

Можно ли использовать timstampadd, а затем повторить, чтобы получить нужные строки. выберите метку времени (мин, 45, текущая метка_времени());

Pankaj 29.03.2022 22:53
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
1
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте следующий генератор времени с 15-минутным интервалом, а затем используйте другие функции даты и времени по мере необходимости, чтобы извлечь часть даты или часть времени в отдельных столбцах.

with CTE as
(select timestampadd(min,seq4()*15 ,date_trunc(hour, current_timestamp())) as time_count 
from table(generator(rowcount=>4*24)))
select time_count from cte;
+-------------------------------+
| TIME_COUNT                    |
|-------------------------------|
| 2022-03-29 14:00:00.000 -0700 |
| 2022-03-29 14:15:00.000 -0700 |
| 2022-03-29 14:30:00.000 -0700 |
| 2022-03-29 14:45:00.000 -0700 |
| 2022-03-29 15:00:00.000 -0700 |
| 2022-03-29 15:15:00.000 -0700 |
.
.
.
....truncated output
| 2022-03-30 13:15:00.000 -0700 |
| 2022-03-30 13:30:00.000 -0700 |
| 2022-03-30 13:45:00.000 -0700 |
+-------------------------------+

На этот вопрос уже есть много ответов часере (эти 4 — все в этом месяце).

Но важно отметить, что вы НЕ ДОЛЖНЫ использовать SEQx() в качестве генератора чисел (вы можете использовать его в ORDER BY, но это не обязательно). Как указано в доктора

Important

This function uses sequences to produce a unique set of increasing integers, but does not necessarily produce a gap-free sequence. When operating on a large quantity of data, gaps can appear in a sequence. If a fully ordered, gap-free sequence is required, consider using the ROW_NUMBER window function.

CREATE TABLE table_of_2_years_date_times AS
SELECT 
    date_time::date as date,
    date_time::time as time
FROM (
    SELECT 
        row_number() over (order by null)-1 as rn
        ,dateadd('minute', 15 * rn, '2022-03-01'::date) as date_time
    from table(generator(rowcount=>4*24*365*2))
)
ORDER BY rn;

затем выберите верх/низ:

(SELECT * FROM table_of_2_years_date_times ORDER BY date,time LIMIT 5)
UNION ALL 
(SELECT * FROM table_of_2_years_date_times ORDER BY date desc,time desc LIMIT 5)
ORDER BY 1,2;
ДАТАВРЕМЯ
2022-03-0100:00:00
2022-03-0100:15:00
2022-03-0100:30:00
2022-03-0100:45:00
2022-03-0101:00:00
2024-02-2822:45:00
2024-02-2823:00:00
2024-02-2823:15:00
2024-02-2823:30:00
2024-02-2823:45:00

Другие вопросы по теме