关于INTERVAL 函数的使用

关于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




猜你喜欢

转载自blog.csdn.net/Mr_lqh325/article/details/119658480