powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вычесть день из даты в цикле
4 сообщений из 4, страница 1 из 1
Вычесть день из даты в цикле
    #40138704
qwerty5000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!

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

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

так тоже не хочет
Код: SQL
1.
(h.time BETWEEN (reportDate - INTERVAL  concat(iIter+1, ' DAY') )  AND (reportDate - INTERVAL  concat(iIter, ' DAY') ))
...
Рейтинг: 0 / 0
Вычесть день из даты в цикле
    #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
Вычесть день из даты в цикле
    #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
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вычесть день из даты в цикле
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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