Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передвинуть дату во всех строках таблицы на 2 года / 16 сообщений из 16, страница 1 из 1
23.07.2020, 12:55
    #39983047
Eva_Klass
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Привет! Прошу помочь мне с переносом даты и времени.
Имеется таблица с ~700 строками и множеством колонок. В каждой строке имеется свой timestamp.
Необходимо перенести все timestamp'ы на 2 года вперед.
Как сделать это не через 700 запросов?
...
Рейтинг: 0 / 0
23.07.2020, 13:03
    #39983057
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Eva_Klass,

покажите хотя бы два запроса из 700
...
Рейтинг: 0 / 0
23.07.2020, 13:22
    #39983074
Eva_Klass
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
123йй,

700 одинаковых с разными айдишниками, типа

update TABLE
set TIMESTAMP = (select ADD_MONTHS(TIMESTAMP, 24) from TABLE where ID=10)
where ID=10;
...
Рейтинг: 0 / 0
23.07.2020, 13:26
    #39983080
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Eva_Klass
123йй,

700 одинаковых с разными айдишниками, типа

update TABLE
set TIMESTAMP = (select ADD_MONTHS(TIMESTAMP, 24) from TABLE where ID=10)
where ID=10;


update TABLE
set TIMESTAMP = ADD_MONTHS(TIMESTAMP, 24) ;
както так
...
Рейтинг: 0 / 0
23.07.2020, 13:39
    #39983091
Eva_Klass
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Надфиль,

Спасибо!
Теперь мне стыдно, что я сама не додумалась) перемудрила
...
Рейтинг: 0 / 0
23.07.2020, 14:04
    #39983102
Надфиль
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Eva_Klass
Надфиль,

Спасибо!
Теперь мне стыдно, что я сама не додумалась) перемудрила

ну если, скажем, зарплата сдельная и зависит от кол-ва запросов, то можно предложить более громоздкие варианты :-)
...
Рейтинг: 0 / 0
23.07.2020, 14:33
    #39983117
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Eva_Klass

В каждой строке имеется свой timestamp .
Необходимо перенести все timestamp'ы на 2 года вперед.
Как сделать это не через 700 запросов?


Код: plsql
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.
32.
33.
SQL> create table t(id int, t timestamp);

Table created.

SQL> insert into t values(1,systimestamp);

1 row created.

SQL> select * from t;

        ID
----------
T
---------------------------------------------------------------------------
         1
23.07.2020 14:29:02.891782


SQL> update t set t=add_months(t,24);

1 row updated.

SQL> select * from t;

        ID
----------
T
---------------------------------------------------------------------------
         1
23.07.2022 14:29:02.000000


SQL>



.....
stax
...
Рейтинг: 0 / 0
23.07.2020, 14:47
    #39983123
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Eva_Klass
имеется свой timestamp.


+ interval '2' year
...
Рейтинг: 0 / 0
23.07.2020, 14:48
    #39983124
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SQL> select ts, ts+interval'2' year ts2 from (select systimestamp ts from dual);

TS                                  TS2
----------------------------------- ------------------------------------
2020-07-23 12:47:58.729000 +01:00   2022-07-23 12:47:58.729000000 +01:00

1 row selected.
...
Рейтинг: 0 / 0
23.07.2020, 14:54
    #39983132
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
xtender,

с высокосным не проконает

.....
stax
...
Рейтинг: 0 / 0
23.07.2020, 14:55
    #39983136
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
env,

22172395

....
stax
...
Рейтинг: 0 / 0
23.07.2020, 15:02
    #39983141
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Stax,

Да, на 29 февраля можно поймать ORA-01839

upd. но это всегда можно обойти, например

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
with t as (
    select
        timestamp '2020-02-29 00:00:01' d
    from
        dual
)
select
        case
            when to_char(d, 'ddmm') = '2902' then
                d - interval '1' day
            else
                d
        end
        + interval '2' year d1
from
    t;
...
Рейтинг: 0 / 0
23.07.2020, 15:09
    #39983148
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
env


upd. но это всегда можно обойти, например



22172346

....
stax
...
Рейтинг: 0 / 0
23.07.2020, 15:13
    #39983151
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
Stax,

Стас, в этом варианте точность не теряется. Проверь с добавлением миллисекунд.
...
Рейтинг: 0 / 0
23.07.2020, 15:30
    #39983168
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
env
Stax,

Стас, в этом варианте точность не теряется. Проверь с добавлением миллисекунд.


да я верю, что не теряется
просто ето один из вариантов "то можно предложить"

ps
+ interval '2' year нулевой год делает, екзотика но ...

....
stax
...
Рейтинг: 0 / 0
23.07.2020, 16:09
    #39983211
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передвинуть дату во всех строках таблицы на 2 года
env,

надо и на 2802 проверять, если +2года ето 2902, но тут уже от Евы зависит

....
stax
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передвинуть дату во всех строках таблицы на 2 года / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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