Dashboard > СУБД > Home > Oracle, работа с датой и временем > Просмотр
  СУБД Вход | Зарегистрироваться   Вариант для печати.  
  Oracle, работа с датой и временем
Добавил(а) shixaro, последний раз редактировал(а) shixaro Jun 01, 2012  (посмотреть изменения)
Метки: 

1. Вычисление разницы в сутках:

SELECT ROUND(to_date('15.03.2010', 'DD/MM/YYYY' )-sysdate,0) AS diff FROM dual;

2. Работа с интервалами:

В оракле очень интересно работает интервальный запрос. К примеру, нужно получить дату, которая была два месяца назад.

select to_date(sysdate,'DD.MM.RR')-interval '2' month from dual

Если выполнить подобный запрос 29 апреля, то он вернет ошибку, т.к. 29 февраля нет (28 дней в феврале).

Правильный вариант:

select add_months(trunc(sysdate),-2) from dual

3. Извлечение часов, минут, секунд из текущей даты
Вариант 1

SELECT TO_NUMBER(EXTRACT (HOUR FROM a.dt)) hh, TO_NUMBER(EXTRACT (MINUTE FROM a.dt)) mm, TO_NUMBER(EXTRACT (SECOND FROM a.dt)) ss FROM (SELECT CAST(sysdate AS TIMESTAMP) dt FROM dual) a

Вариант 2

SELECT TO_NUMBER(EXTRACT (HOUR FROM (CAST(sysdate AS TIMESTAMP)))) hh, TO_NUMBER(EXTRACT (MINUTE FROM (CAST(sysdate AS TIMESTAMP)))) mm, TO_NUMBER(EXTRACT (SECOND FROM (CAST(sysdate AS TIMESTAMP)))) ss FROM dual

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5 Build:#805 Apr 26, 2007) - Запрос Bug/feature - Связаться с администраторами