Интервалы времени в Oracle SQL

Статьи про Oracle -> Программирование

Интервалы времени в Oracle SQL

v:1.0 27.07.2014
Петрелевич Сергей

Периодически при написании sql-запросов в Oracle надо из заданного времени, например текущего, вычесть какое-то количество секунд.
Это можно сделать несколькими способами.

Например, так.

sysdate-10*1/24/60/60
Из системной даты вычитаются 10 секунд.
Делается этот так: sysdate-1 ----вычитаем 1 день
1/24/60/60 --день переводим в часы, часы в минуты, а минуты в секунды.
Результат умножаем на 10, чтобы получить 10 секунд.

Есть способ красивее

sysdate-INTERVAL '10' SECOND
В этом способе используется системный литерал Oracle: INTERVAL.

И полный пример.

select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss') as now,
       to_char(sysdate-10*1/24/60/60,'dd.mm.yyyy hh24:mi:ss') as before_1,
       to_char(sysdate-INTERVAL '10' SECOND,'dd.mm.yyyy hh24:mi:ss') as before_2
from dual 

P.S.
Вот еще несколько примеров применения .

select to_char(sysdate,'dd.mm.yyyy hh24:mi:ss') as now,

  to_char(sysdate+INTERVAL '1:2' MINUTE TO SECOND,'dd.mm.yyyy hh24:mi:ss') as addTime,   --добавляем часы и минуты
  to_char(sysdate+INTERVAL '10' MINUTE,'dd.mm.yyyy hh24:mi:ss')            as addMinutes,--добавляем минуты
  to_char(sysdate+INTERVAL '2' HOUR ,'dd.mm.yyyy hh24:mi:ss')              as addHour,   --добавляем часы
  to_char(sysdate+INTERVAL '4' DAY,'dd.mm.yyyy hh24:mi:ss')                as addDay     --добавляем дни
from dual    

Метки: SQL  

Комментарии.

Внимание.
Комментировать могут только зарегистрированные пользователи.
Возможно использование следующих HTML тегов: <a>, <b>, <i>, <br>.

jashka34 Oct 28, 2014 5:40:51 PM
Кстати, а более красивый способ чем получать дату первого дня месяца так вот: select ((last_day(sysdate) + 1) - interval '1' month) from dual есть? :)
 
Sergey Oct 28, 2014 8:10:28 PM
я бы предложил такой способ: select 1 as first from dual
 
igorDem Nov 21, 2014 6:48:37 PM
А чем trunc(sysdate,'MM') не устраивает?
 
Sergey Nov 22, 2014 3:55:35 PM
trunc(sysdate,'MM') - нормальное решение.
jashka34 предложил, на мой взгляд, очень остроумный вариант. :)
 
tyffghhg Nov 6, 2019 11:15:31 PM
Приветствую! А, как получить список сотрудников с HIRE_DATE в интервале день?