Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите разобраться с Датами / 18 сообщений из 18, страница 1 из 1
03.09.2014, 07:57
    #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
03.09.2014, 08:26
    #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
03.09.2014, 08:30
    #38735680
m7m
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
03.09.2014, 08:39
    #38735690
koshmar5699
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Датами
m7m,
да вот я и не могу понять как это сделать я если чесно в SQL нуб(
Там даты стоят типа 10.10.2014 10.00 и таких по 150000 записей на таблицу. вот надо что бы стало типа 10.10.2013 10.00 тока год поменять а остальное оставить как было)))
...
Рейтинг: 0 / 0
03.09.2014, 08:44
    #38735691
koshmar5699
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с Датами
m7m,

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

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

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


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

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


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