关于INTERVAL 函数的使用
一、 INTERVAL 表示某段时间【简单用法】
格式如下:
INTERVAL '时间' <year/month/day/hour/minute/second>
例子:
select sysdate - INTERVAL '10' YEAR as "10年前",
sysdate - INTERVAL '10' MONTH as "10个月前",
sysdate - interval '10' day as "10天前",
sysdate - interval '10' hour as "10小时前",
sysdate - interval '10' minute as "10分钟前",
sysdate - interval '10' second as "10秒钟前",
sysdate - 10 as "10天前",
sysdate - 10 / 24 as "10小时前",
sysdate - 10 / (24 * 60) as "10分钟前",
sysdate - 10 / (24 * 3600) as "10秒钟前"
from dual;
表达式 | 说明 |
---|
INTERVAL ‘10’ YEAR | 时间间隔为10年 |
INTERVAL ‘10’ MONTH | 时间间隔为10个月 |
INTERVAL ‘10’ DAY | 时间间隔为10天 |
INTERVAL ‘10’ HOUR | 时间间隔为10小时 |
INTERVAL ‘10’ HOUR | 时间间隔为10小时 |
INTERVAL ‘10’ MINUTE | 时间间隔为10分钟 |
INTERVAL ‘10’ SECOND | 时间间隔为10秒 |
二、高级用法
格式
INTERVAL '[+|-][y][-m]' [YEAR[( years_precision)])] [TO MONTH]
- [+] 或 [-] 是一个可选的指示符,用来说明时间间隔是正数还是负数(默认为正数)。
- y 是一个可选参数,表示时间间隔的年数部分。
- m 是一个可选参数,表示时间间隔的月数部分。如果指定了年数和月数,必须在INTERVAL子句中包含TO MONTH。
- year_precision是一个可选参数,用来说明年数的精度(默认为2)。
例子
# 返回一个时间段
SQL> select interval '1-3' year to month from dual;
INTERVAL'1-3'YEARTOMONTH
---------------------------------------------------------------------------
+01-03
# 可以进行运算操作
SQL> select sysdate + interval '1-3' year to month from dual;
SYSDATE+INTERVAL'1-
-------------------
2022-11-13 01:23:13
# 此处指定了duration列的精度为3,这就是说可以为该列的年数部分存储3位数字,所以报错提示:间隔的前导精度太小
SQL> select interval '2021' year(3) from dual;
select interval '2021' year(3) from dual
*
ERROR at line 1:
ORA-01873: the leading precision of the interval is too small