Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вычесть день из даты в цикле / 4 сообщений из 4, страница 1 из 1
23.07.2024, 07:50
    #40138704
qwerty5000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычесть день из даты в цикле
Доброго времени суток!

Не получается подставить переменную в цикле для BETWEEN
Код: SQL
1.
(h.time BETWEEN (reportDate - INTERVAL iIter + 1 DAY )  AND (reportDate - INTERVAL iIter DAY ))
где

reportDate - дата
iIter - int переменная инкрементирующая в цикле
...
Рейтинг: 0 / 0
23.07.2024, 07:57
    #40138705
qwerty5000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычесть день из даты в цикле
qwerty5000 [игнорируется] 

так тоже не хочет
Код: SQL
1.
(h.time BETWEEN (reportDate - INTERVAL  concat(iIter+1, ' DAY') )  AND (reportDate - INTERVAL  concat(iIter, ' DAY') ))
...
Рейтинг: 0 / 0
23.07.2024, 10:19
    #40138706
CerebroSQL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычесть день из даты в цикле
qwerty5000  23.07.2024, 07:57
[игнорируется]
qwerty5000 [игнорируется] 

так тоже не хочет
Код: SQL
1.
(h.time BETWEEN (reportDate - INTERVAL  concat(iIter+1, ' DAY') )  AND (reportDate - INTERVAL  concat(iIter, ' DAY') ))
Код: PL/pgSQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table ttt (i int, dt date)
insert into ttt values (1, '2024-01-01');
insert into ttt values (2, '2024-02-01');
insert into ttt values (3, '2024-03-01');

do $$
declare
   iIter integer:= 1;
   rOut integer;
   reportDate timestamp;
begin
  reportDate := '2024-01-15';

  select i into rOut from ttt
    where dt between reportDate + (iIter||' DAY')::interval and reportDate + (iIter+20||' DAY')::interval;
  raise info 'I: %, %, %', rOut, reportDate + (iIter||' DAY')::interval, reportDate + (iIter+20||' DAY')::interval;
end ;
$$
Output for command in the lines 8 - 20
I: 2, 2024-01-16 00:00:00, 2024-02-05 00:00:00
...
Рейтинг: 0 / 0
23.07.2024, 11:11
    #40138707
qwerty5000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычесть день из даты в цикле
CerebroSQL  23.07.2024, 10:19
[игнорируется]
qwerty5000  23.07.2024, 07:57
[игнорируется]
qwerty5000 [игнорируется] 

так тоже не хочет
Код: SQL
1.
(h.time BETWEEN (reportDate - INTERVAL  concat(iIter+1, ' DAY') )  AND (reportDate - INTERVAL  concat(iIter, ' DAY') ))
Код: PL/pgSQL
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create table ttt (i int, dt date)
insert into ttt values (1, '2024-01-01');
insert into ttt values (2, '2024-02-01');
insert into ttt values (3, '2024-03-01');

do $$
declare
   iIter integer:= 1;
   rOut integer;
   reportDate timestamp;
begin
  reportDate := '2024-01-15';

  select i into rOut from ttt
    where dt between reportDate + (iIter||' DAY')::interval and reportDate + (iIter+20||' DAY')::interval;
  raise info 'I: %, %, %', rOut, reportDate + (iIter||' DAY')::interval, reportDate + (iIter+20||' DAY')::interval;
end ;
$$
Output for command in the lines 8 - 20
I: 2, 2024-01-16 00:00:00, 2024-02-05 00:00:00
CerebroSQL [игнорируется] 
Спасибо!
Эта конструкция и вправду заработала
Код: SQL
1.
(iIter||' DAY')
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вычесть день из даты в цикле / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]