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;
查询结果如下:
热门推荐
欧洲足球经济危机:家业越大损失越惨 寅吃卯粮豪门怎偿巨债?
哪些情况下可以免费使用图片
商鞅变法的结果如何?对后来的秦国与秦朝产生了哪些影响?
中国货币的变迁:从海贝到机器铸造的银圆
从零开始养好柠檬树(柠檬树的养殖方法和注意事项详解)
在线客服系统:主动沟通,构建客户信任的桥梁
教育部学历证书电子注册备案表打印指南
服用异维A酸软胶囊的忌口
披麻戴孝的由來與佛教黑袍的採用:喪服演進史
上海徐汇衡复风貌区:探索历史建筑可持续发展之路
玫瑰糠疹一般多久自愈
荷柳情缘:探寻济南大明湖畔的绝美传说
肝病患者饮用茶水的利弊与建议
别再瞎蒙自己是哪虚了,中医一次性给你讲明白,分清气虚阳虚阴虚
三个月宝宝先天性髋关节发育不良
创维电视机黑屏怎么办
为什么《监狱学园》中的“花姐”绿川花相对于其他女主比较受观众和阿宅的欢迎?
激光投影仪VS LED投影仪:电路板性能大对比
学霸不靠笔记靠什么?揭秘高效学习策略
清明节缅怀松山战役中为国捐躯的1000多娃娃兵,最小的年龄仅9岁!
探索云南文山:不可错过的自然与人文景观全解析
常见的几种网线类型以及规格
擦伤如何预防和护理:上海九院的建议
父母在孩子成长中的重要作用
上海中心大厦上新AI+文旅项目,来一场沉浸式科幻体验……
苏州大学马全红团队:GPR50作为线粒体自噬受体,调节神经元发育
腰疼是怎么回事?医生:6大腰疼原因,教你怎么办,看病少走弯路
方孝孺的悲剧:愚忠还是任性?
健康科普短视频未必都“健康”,如何甄别?
你的维生素 D 补对了吗?