как добавить секунду в метку времени оракула - PullRequest
0 голосов
/ 04 июня 2018

Как я могу добавить секунды со значением метки времени в Oracle.Я попробовал это ....

SELECT CURRENT_TIMESTAMP , CURRENT_TIMESTAMP+200 AS addedTime FROM dual

Но этим я получаю это

2018-06-04 19:03:01 => 2018-12-21 19:03:01 (после добавления 200)

Как видите, дата добавляется, но я хочу добавить только секунду ...

Этот SQL-код работает правильно в DB2, может кто-нибудь предложить мне любойПодходящая альтернатива в Oracle.

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

В Oracle арифметика даты / времени выражается в днях.Таким образом, добавление 200 добавляет 200 дней к объекту Oracle DATE или TIMESTAMP.Если вы хотите добавить секунды, вы можете использовать интервалы или дробные дни.Лично я предпочитаю использовать интервалы для чего-то более мелкого, чем секунды.от часов и выше я использую обычную арифметику дат или ADD_MONTHS() (интервальные месяцы и годы особенно опасны, так как они не безопасны для високосного года, в то время как ADD_MONTHS()).

SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP + INTERVAL '200' SECOND FROM dual;

Обратите внимание, чтонеобходимы одинарные кавычки вокруг значения интервала;INTERVAL 200 SECOND вызовет ошибку.

Надеюсь, это поможет.

0 голосов
/ 04 июня 2018

Вы всегда можете использовать дробь (для Oracle 1 = 1 день):

SELECT CURRENT_TIMESTAMP ,
       CURRENT_TIMESTAMP + 200 *(1/24/60/60) AS addedTime 
FROM dual;
<=>
SELECT CURRENT_TIMESTAMP + 200/86400 FROM dual

DBFiddle Demo

или:

SELECT CURRENT_TIMESTAMP + INTERVAL '200' SECOND FROM dual
...