Mysql的INTERVAL()函数和INTERVAL关键字

Mysql的INTERVAL()函数和INTERVAL关键字

 

 


一,INTERVAL()函数
INTERVAL()函数可以返回分段后的结果,语法如下:

INTERVAL(N,N1,N2,N3,..........)

其中,N是要判断的数值,N1,N2,N3,...是分段的间隔。

这个函数的返回值是段的位置:

如果N<N1,则返回0,

如果N1<=N<N2,则返回1,

如果N2<=N<N3,则返回2。

所以,区间是前闭后开的。

 

举个例子:

有这样的数据:

 

然后执行以下sql:

SELECT id,percent,INTERVAL(percent,25,50) from test;
执行结果如下:

 

意思大概是这样的:percent字段参与判断,设定的区段是25,50,那么小于25的值返回0,大于等于25小于50的值返回1,大于等于50的值返回2。

 

还可以把INTERVAL()函数用在GROUP BY中:

执行这样的sql:

SELECT
INTERVAL (percent, 0, 26, 51),
COUNT(1)
FROM
test
GROUP BY
INTERVAL (percent, 0, 26, 51);
执行结果如下:

 

 

二,INTERVAL关键字
INTERVAL关键字可以用于计算时间间隔,可以有以下用法。

 

1,直接计算时间间隔。

例1:查询当前时间之前2个小时的日期:

SELECT NOW()-INTERVAL '2' HOUR;
例2:

有这样的表:

 

执行这样的sql:

SELECT
id,
percent,
t_date,
t_date - INTERVAL 2 HOUR
FROM
test
where t_date - INTERVAL 2 HOUR>'2020-11-02';
执行结果:

 

注:INTERVAL后面的数字可以用数字格式或者字符格式,当时间单位是YEAR_MONTH这种时,必须用字符格式。

 

2,用在时间函数中

INTERVAL关键字可以用在DATE_SUB(),SUBDATE(),ADDDATE()等函数中。

例1:查询两天前的时间:

SELECT NOW(),SUBDATE(NOW(),INTERVAL 2 DAY);
例2:执行这样的sql:

SELECT
id,
percent,
t_date,
DATE_SUB(t_date, INTERVAL 2 HOUR)
FROM
test
WHERE
DATE_SUB(t_date, INTERVAL 2 HOUR) > '2020-11-02';
执行结果:

 

 

可用的时间单位:

MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH
重点关注一下YEAR_MONTH这种格式的单位,以YEAR_MONTH为例,代表几年又几个月的时间间隔。

比如查询当前时间前一年又三个月的时间,可以这样:

SELECT NOW(),NOW()-INTERVAL '1 3' YEAR_MONTH;
执行结果:

 

其中:

'1 3' YEAR_MONTH的配置就是代表1年3个月,两个数字之间的间隔符用等号,空格,下划线,中划线等等的都可以。

同理,'2 1 3 4' DAY_SECOND就代表2天1小时3分4秒:

 

另外,在Oracle中,INTERVAL关键字还有专门的语法,可以起到MySQL中YEAR_MONTH关键字差不多的功能:

INTERVAL 'integer [- integer]' {YEAR | MONTH} [(precision)][TO {YEAR | MONTH}]

原文链接:https://blog.csdn.net/lkforce/article/details/109537645

posted @ 2022-11-03 08:14  .net&new  阅读(248)  评论(0编辑  收藏  举报