日期算术
Oracle 支持 DATE
(包括到最近的秒的时间)和 TIMESTAMP
(包括到几分之一秒的时间)数据类型,这允许本地算术(加法和减法)。例如:
要获得第二天:
select to_char(sysdate + 1, 'YYYY-MM-DD') as tomorrow from dual;
前一天:
select to_char(sysdate - 1, 'YYYY-MM-DD') as yesterday from dual;
要在当前日期添加 5 天:
select to_char(sysdate + 5, 'YYYY-MM-DD') as five_days_from_now from dual;
要在当前日期添加 5 小时:
select to_char(sysdate + (5/24), 'YYYY-MM-DD HH24:MI:SS') as five_hours_from_now from dual;
要在当前日期添加 10 分钟:
select to_char(sysdate + (10/1440), 'YYYY-MM-DD HH24:MI:SS') as ten_mintues_from_now from dual;
要在当前日期添加 7 秒:
select to_char(sysdate + (7/86400), 'YYYY-MM-DD HH24:MI:SS') as seven_seconds_from_now from dual;
要选择 hire_date
是 30 天前或更早的行:
select * from emp where hire_date < sysdate - 30;
要选择 last_updated
列在最后一小时内的行:
select * from logfile where last_updated >= sysdate - (1/24);
Oracle 还提供内置数据类型 INTERVAL
,它表示持续时间(例如 1.5 天,36 小时,2 个月等)。这些也可以与 DATE
和 TIMESTAMP
表达式一起使用。例如:
select * from logfile where last_updated >= sysdate - interval '1' hour;