日期算术

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 个月等)。这些也可以与 DATETIMESTAMP 表达式一起使用。例如:

select * from logfile where last_updated >= sysdate - interval '1' hour;