powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите разобраться с Датами
18 сообщений из 18, страница 1 из 1
Помогите разобраться с Датами
    #38735660
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем задача такова есть база Firebird в которой хранится статистика и события,
в базе есть таблицы вида journalevents_1,journalevents_2,journalevents_3......и т.д. то есть всего их 12 таблиц каждая таблица соответствует месяцу в году. В каждой таблице есть столбцы TIMESYS и TIMEEVENTS формат дата, нужно сделать запрос что бы дату откатить на год или 2 назад.
делал так:
Код: sql
1.
2.
3.
UPDATE journalevents_1
      SET timesys = timesys - 365
        WHERE  timesys > '31.12.2011' and timesys < '01.01.2015'


но это долго так как на каждую таблицу надо выполнять этот запрос.
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735674
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
updatable view ?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
recreate view v_all as select current_date dt from rdb$database;
recreate table t01(dt date unique check( extract(month from dt)=1 ) );
recreate table t02(dt date unique check( extract(month from dt)=2 ));
recreate table t03(dt date unique check( extract(month from dt)=3 ));
commit;
recreate view v_all as
select dt from t01
union all
select dt from t02
union all
select dt from t03;
commit;
insert into t01 values('22.01.2014');
insert into t01 values('28.01.2014');
insert into t02 values('02.02.2014');
insert into t02 values('15.02.2014');
insert into t03 values('07.03.2014');
insert into t03 values('23.03.2014');
commit;
set term ^;
create or alter trigger v_all_bu for v_all active before update as
  declare m smallint;
  declare d smallint;
begin
  m = extract(month from new.dt);
  if (m=1) then update t01 set dt=new.dt where dt=old.dt;
  if (m=2) then update t02 set dt=new.dt where dt=old.dt;
  if (m=3) then update t03 set dt=new.dt where dt=old.dt;
end
^set term ;^
commit;

Test:
Код: sql
1.
2.
update v_all set dt=dateadd(-1 year to dt);
select v.* from v_all v;

Result:
DT22.01.201328.01.201302.02.201315.02.201307.03.201323.03.2013
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735680
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koshmar5699В общем задача такова есть база Firebird в которой хранится статистика и события,
в базе есть таблицы вида journalevents_1,journalevents_2,journalevents_3......и т.д. то есть всего их 12 таблиц каждая таблица соответствует месяцу в году. В каждой таблице есть столбцы TIMESYS и TIMEEVENTS формат дата, нужно сделать запрос что бы дату откатить на год или 2 назад.
делал так:
Код: sql
1.
2.
3.
UPDATE journalevents_1
      SET timesys = timesys - 365
        WHERE  timesys > '31.12.2011' and timesys < '01.01.2015'


но это долго так как на каждую таблицу надо выполнять этот запрос.

Собери все в одну таблицу journalevents

зы. будет так-же долго, зато запрос надо будет выполнить один раз
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735690
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,
да вот я и не могу понять как это сделать я если чесно в SQL нуб(
Там даты стоят типа 10.10.2014 10.00 и таких по 150000 записей на таблицу. вот надо что бы стало типа 10.10.2013 10.00 тока год поменять а остальное оставить как было)))
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735691
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m7m,

я Думаю что то типа
Код: sql
1.
2.
UPDATE таблица 
SET journalevents_1.timesys = DateAdd()
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735693
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koshmar5699да вот я и не могу понять как это сделать я если чесно в SQL нуб( sql-ex.ru + их интерактивный учебник.
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735694
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DateAdd тебе поможет
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735703
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоидkoshmar5699да вот я и не могу понять как это сделать я если чесно в SQL нуб( sql-ex.ru + их интерактивный учебник.
Как раз там я и решаю задачи и учусь) но вот эту задачу надо как то разрешить(
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735706
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tactical Nuclear PenguinDateAdd тебе поможет
Да я тоже думаю что поможет, но вот как применить?
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735709
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koshmar5699Tactical Nuclear PenguinDateAdd тебе поможет
Да я тоже думаю что поможет, но вот как применить?

вот описание, что там непонятно?
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38735970
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
koshmar5699
Код: sql
1.
2.
3.
UPDATE journalevents_1
      SET timesys = timesys - 365
        WHERE  timesys > '31.12.2011' and timesys < '01.01.2015'


Я, может, чего-то не понимаю, но этот запрос перемещает на год назад уже залогированные события. Затрудняюсь представить, для чего это может быть нужно. Точно ли этого хочет ТС?
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736117
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fr0sT-Brutalkoshmar5699
Код: sql
1.
2.
3.
UPDATE journalevents_1
      SET timesys = timesys - 365
        WHERE  timesys > '31.12.2011' and timesys < '01.01.2015'


Я, может, чего-то не понимаю, но этот запрос перемещает на год назад уже залогированные события. Затрудняюсь представить, для чего это может быть нужно. Точно ли этого хочет ТС?
именно так, Это события из базы ПЦН (охрана), так вот при неизвестных обстоятельствах были удаленны прошлые года остался тока 13ый год полностью вот и начальство постановило сделать журнал (фейк) за 12ый год по всем объектам. вот и бьюсь я сис админ и поэтому с SQL не оч дружу
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736152
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot koshmar5699]Fr0sT-Brutalпропущено...
именно так, Это события из базы ПЦН (охрана), так вот при неизвестных обстоятельствах были удаленны прошлые года остался тока 13ый год полностью вот и начальство постановило сделать журнал (фейк) за 12ый год по всем объектам. вот и бьюсь я сис админ и поэтому с SQL не оч дружу

и с головой не дружишь. пишешь отказ и регистрируешь в канцелярии.
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736195
koshmar5699
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем покурил подумал покурил подумал, нашёл решение выглядит так)
Код: sql
1.
2.
update journalevents_2
    set timeevent=dateadd(-1 year to timeevent);


теперь как бы это объеденить в 1 запрос к всем таблицам)
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736202
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koshmar5699теперь как бы это объеденить в 1 запрос к всем таблицам)
Тебя в натуре ломает запустить этот запрос 12 раз?.. А таки придётся.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736344
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koshmar5699остался тока 13ый год полностью вот и начальство постановило сделать журнал (фейк) за 12ый годтебе разве не инсерт нужен?
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736374
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyтебе разве не инсерт нужен?
Телепаю: раз уж у них на каждый месяц новая таблица, то на каждый год новая БД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Помогите разобраться с Датами
    #38736718
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, судя по запросу из первого поста - нет.

koshmar5699, в самом деле, если акция разовая, то делаешь все полувручную (для каждой таблицы) и не паришь мозги оптимизацией процесса.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите разобраться с Датами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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