MySQL中between and的基本用法、范围查询
创作时间:
作者:
@小白创作中心
MySQL中between and的基本用法、范围查询
引用
CSDN
1.
https://blog.csdn.net/m0_74824483/article/details/145866787
MySQL中的BETWEEN AND
操作符用于在两个值之间选择数据,包括边界值。其基本语法如下:
[NOT] BETWEEN 取值1 AND 取值2
其中:
- NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
- 取值1:表示范围的起始值。
- 取值2:表示范围的终止值。
使用场景:
between…and
的使用一般有两种情况,一个是数值范围,一个是时间范围。当查询时间范围时要注意可能会遇到时间精度问题,具体参考下面示例。
数据准备
create table user(
id int NOT NULL auto_increment primary key comment '主键id',
`name` varchar(10) NULL comment '姓名',
age int NULL comment '年龄',
salary int NULL comment '工资',
create_time datetime comment '创建时间戳'
);
insert into user(name,age,salary,create_time) values
('张三',23,100,'2024-10-29 10:01:22'),
('李四',24,200,'2024-10-30 09:44:22'),
('王五',25,300,'2024-10-30 10:01:22'),
('赵六',26,400,'2024-10-31 07:01:23');
表数据如下
数值查询
between…and…
是支持数值查询的,当字段类型是数值时 between A and B
等同于>=A and <=B
。当between and
用于数值查询时,常用于字段类型为int、decimal等。
-- 查询用户表中年龄在24到25之间的用户
select * from user where age between 24 and 25;
等同于
select * from user where age >= 24 and age <= 25;
查询结果如下:
时间范围查询
注意:
- 当日期字段为date类型时,即时间格式为yyyy-MM-dd,
between ‘2024-10-29’ and ‘2024-10-30’
相当于>=‘2024-10-29’ and <=‘2024-10-30’
- 当日期字段为datetime、timestamp类型时,即时间格式为yyyy-MM-dd HH:mm:ss,
between ‘2024-10-29’ and ‘2024-10-30’
相当于>=‘2024-10-29 00:00:00’ and <=‘2024-10-30 00:00:00’
。所以
当between and
对datetime、timestamp类型查询时,一定要注意手动拼接时分秒,否则查询数据可能不符合预期。
先上一个错误示例:对datetime类型查询不带时分秒
-- 查询用户表中创建时间在2024-10-29到2024-10-30之间的数据
select * from user where create_time between '2024-10-29' and '2024-10-30';
等同于
select * from user where create_time >= '2024-10-29 00:00:00' and create_time <= '2024-10-30 00:00:00';
查询结果:
从上面示例可以看出,还有两条数据时间是在2024-10-30日范围内,但是并没有被查询出来。
所以需要注意:
当between and
对datetime、timestamp类型查询时,一定要注意手动拼接时分秒,否则查询数据可能不符合预期。
正确示例
-- 查询用户表中创建时间在2024-10-29到2024-10-30之间的数据
select * from user where create_time between '2024-10-29 00:00:00' and '2024-10-30 23:59:59';
等同于
select * from user where create_time >= '2024-10-29 00:00:00' and create_time <= '2024-10-30 23:59:59';
查询结果:
not between and示例
not between and
表示指定范围之外的值。not between A and B
相当于 < A or >B
。
示例:查询年龄不在24到25之间的用户
-- 查询用户表中年龄不在24到25之间的用户
select * from user where age not between 24 and 25;
等同于
select * from user where age < 24 or age > 25;
查询结果如下:
热门推荐
五大联赛主帅薪资榜:西蒙尼283万欧年薪断崖式领跑,法甲第一最“憋屈”!
寻找专业关怀:探索检查艾滋病的优选医院
汽车玻璃水加洗洁精水可以吗
.NET10 和 C#13 新特性预览
算法专题-单调栈
深圳公租房申请指南:在线申请流程与所需材料详解
丁香花的花语和寓意
丁香花的象征意义与美丽之谜(探寻丁香花背后的传奇故事与文化内涵)
英超切尔西vs热刺预测分析 伦敦德比看点十足
英超切尔西vs热刺预测分析 伦敦德比看点十足
便利店冰杯火了…喝冷饮到底会不会伤脾胃?
如何在冬天保证爱车正常运行
适合南方阳台种的水果
收据和发票有什么不同呢?
大疆智图生产的las文件后续用什么软件处理
氧化铝价格居高不下,铝业上市公司发声:不存在囤积、炒作的行为
一战后德国经济困境 纳粹煽动民情夺权
“她时代”的女性领导力
离心管规格和使用方法详解
车厘子的多重健康功效与食谱推荐:适合哪些人群食用
复利思维:每日精进,成就非凡人生
《群星:博物天枢》DLC发布,带来全新太空生物与标本收集系统
电脑显示屏保无法进入桌面?原因与解决方案
如何分析放量下跌的市场现象?这种市场现象有哪些潜在影响?
如何分析放量下跌的市场现象?这种市场现象有哪些潜在影响?
生产管控流程怎么确保产品质量
加班时间劳动法怎样规定的
我国古代十大谋士排名,谁能勇夺桂冠?诸葛亮也只能屈居末席
贾诩和诸葛亮都是有名的谋士,哪个更厉害?
苏格拉底的教育思想及其现代应用