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}]

本文完
————————————————
版权声明:本文为CSDN博主「lkforce」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lkforce/article/details/109537645

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值