2014-10-22 3 views
5

Я просто пытаюсь добавить 1 час до значения, это своего рода сложный, где и почему я это делаю, но в основном я просто нужно запросить что-то вроде этогоOracle Добавить 1 час в SQL

select DATE_ADD(hh,1,'2014-10-15 03:30:00 pm') from dual 

Я продолжаю читать старые статьи, которые говорят использовать dateAdd или date_add, но я продолжаю получать недопустимые ошибки идентификатора.

ответ

14
select sysdate + 1/24 from dual; 

SYSDATE функция без аргументов, возвращает тип даты
+ 1/24 добавляет 1 час к дате

select to_char(to_date('2014-10-15 03:30:00 pm', 'YYYY-MM-DD HH:MI:SS pm') + 1/24, 'YYYY-MM-DD HH:MI:SS pm') from dual; 
+0

Я не хочу, чтобы sysdate у меня статическое значение, которое я получаю от другого запроса, который мне нужно добавить 1 час. выберите ('2014-10-15 03:30:00 pm' + 1/24) из двойного; дает мне неверный номер – Travis

+0

@Travis Обновлен ответ – Multisync

+0

СПАСИБО! Я приму ответ, как только это позволит мне – Travis

5

Используйте интервал:

select some_date_column + interval '1' hour 
from your_table; 
+0

Остерегайтесь того, что 'interval' ожидает строку и не будет автоматически запускаться. Это может привести к проблемам, если вы используете подготовленные инструкции: 'some_date_column + interval: hour_count hour' будет выдавать * ORA-00923: ключевое слово FROM не найдено, где ожидалось *. –

+2

@ ÁlvaroG.Vicario: вы можете обойти это, используя что-то вроде этого: 'some_date_column + (interval '1' hour *: hour_count)' –

3

Вы можете использовать тип INTERVAL или просто добавить расчетное значение числа - «1» равно "1 день".

первый способ:

select date_column + INTERVAL '0 01:00:00' DAY TO SECOND from dual; 

второй путь:

select date_column + 1/24 from dual; 

Первый способ более удобен, когда вам нужно добавить сложное значение - например, «1 день 3 часа 25 минут 49 секунд ». См. Также: http://www.oracle-base.com/articles/misc/oracle-dates-timestamps-and-intervals.php

Также вы должны помнить, что оракул имеет два типа интервалов - ДЕНЬ ВТОРОГО И ГОДА В МЕСЯЦ. Что касается меня, один интервал типа будет лучше, но я надеюсь, что люди в Оракул знает, что они делают;)

1

Расчет прост

если вы хотите добавить 1 час в день.

каждый день есть 24 час, вы можете добавить.

select sysdate + 1/24 from dual; 

если вы хотите 1 день добавить

select sysdate + 24/24 from dual; 

or 

select sysdate + 1 from dual; 

same as for 2, 3 , 4 day 

Для статического момента у вас есть ответ ниже.

Смежные вопросы