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;
查询结果如下:
热门推荐
牛角梳的功效与作用是什么
窗户的使用心得+换窗的经验分享
揭秘梅氏利维坦鲸:中新世海洋霸主的传奇
安赛蜜会发胖吗?揭秘人工甜味剂与体重管理的关系
五大养胃食物推荐,胃病患者必读
大豆棉和棉花哪个好?
国家邮政局:2024年12月中国快递发展指数为469.8 同比提升17.2%
糖尿病十大并发症及预防措施
有限空间作业中如何使用气体检测仪?
知识图谱与AI多模态推理:概念、技术与应用
一闻烟味就咳嗽然后喉咙不舒服
趋势技术分析:上升趋势线和下降趋势线
租房房东不退押金怎么办?一文详解解决方案和短租注意事项
嗳气胃气上逆恢复最好方法
如何在Ubuntu上下载和安装软件?方法原来这么多
怀孕期间怎么洗澡最安全
改善睡眠的天然良方:酸枣仁的神奇功效
香蕉价格逆势上涨,进口量大幅下降
安卓模拟器Frida环境搭建指南(mumu+adb+frida)
签订“格式条款”合同的注意事项
历史上的今天 | 我国第一颗氢弹空投试爆成功
洗衣机电机坏了换电机多少钱
春雷一响,万物“惊”醒!惊蛰来啦!
PPT制作高亮效果,提升演示吸引力的实用技巧
台球重合度瞄准法详解:利用重合度瞄准的技巧
手上长倒刺,千万别直接拔!有人因此拔甲治疗,提醒→
网络速度测试指南:教你解读 Mbps、Ping 等关键指标
电视信号传输的数字化变革:模拟到数字的华丽转身
摩崖欣赏 | 东汉《封燕然山铭》
如何协商解决劳动争议