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

 

本文完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值