Подтвердить что ты не робот

Как обрабатывать прыжки секунд в Oracle

Сегодня вечером будет добавлен второй прыжок, и в последнюю минуту последнего часа дня будет 61 секунда.

2015-06-30 23:59:60

Однако Oracle поддерживает только до 60 секунд в минуту:

TO_DATE( '2015-06-30 23:59:60', 'YYYY-MM-DD HH24:MI:SS' )    

Ошибки с:

ORA-01852: seconds must be between 0 and 59

и

SELECT TO_DATE( '2015-06-30 23:59:59', 'YYYY-MM-DD HH24:MI:SS' ) + INTERVAL '1' SECOND AS Incr_Second_Before,
       TO_DATE( '2015-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS' ) - INTERVAL '1' SECOND AS Decr_Second_After
FROM   DUAL

Выдает вывод:

|     INCR_SECOND_BEFORE |      DECR_SECOND_AFTER |
|------------------------|------------------------|
| July, 01 2015 00:00:00 | June, 30 2015 23:59:59 |

Есть ли способ обработать второй шаг в Oracle?

4b9b3361

Ответ 1

От MOS -

Вставить секунды прыжка в столбец временной метки с помощью ORA-01852 (Doc ID 1553906.1)

Информация в данной статье относится к следующим продуктам.

Oracle Database - Enterprise Edition - версия 8.1.7.4 и более поздняя версия

База данных Oracle - стандартная версия - версия 8.1.7.4 и более поздняя версия

Информация в этом документе относится к любой платформе.

Проблема:

Попытка вставить секунды скачка в столбец временной метки не выполняется: ORA-01852: секунды должны быть между 0 и 59

ПРИЧИНА

Невозможно сохранить значение > 59 секунд в дате или временной отметке Тип данных

Решение

Чтобы обойти эту проблему, вторая вторая запись может быть сохранена в varchar2, например,

SQL> create table test (val number, t varchar2(30));

Table created.

SQL> insert into test values(123, '2012-06-30T23:59:60.000000Z');

1 row created.

Не лучшее решение, но единственное решение.