‌MySQL中‌between and的基本用法‌

打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3030

BETWEEN AND操纵符可以用于数值、日期等类型的字段,包括边界值。
一、between and语法

MySQL中的BETWEEN AND操纵符用于在两个值之间选择数据,包括边界值。其基本语法如下:
  1. [NOT] BETWEEN 取值1 AND 取值2
复制代码
此中:


  • NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记载被返回。
  • 取值1:表示范围的起始值。
  • 取值2:表示范围的终止值。
使用场景:
between…and的使用一般有两种情况,一个是数值范围,一个是时间范围。
当查询时间范围时要留意可能会遇到时间精度标题,详细参考下面示例。
二、使用示例

数据准备
  1. create table user(
  2.        id int NOT NULL auto_increment primary key comment '主键id',
  3.        `name` varchar(10) NULL comment '姓名',
  4.        age int NULL comment '年龄',
  5.        salary int NULL comment '工资',
  6.        create_time datetime comment '创建时间戳'
  7. );
  8. insert into user(name,age,salary,create_time) values
  9. ('张三',23,100,'2024-10-29 10:01:22'),
  10. ('李四',24,200,'2024-10-30 09:44:22'),
  11. ('王五',25,300,'2024-10-30 10:01:22'),
  12. ('赵六',26,400,'2024-10-31 07:01:23');
复制代码
表数据如下

2.1、between and数值查询

between…and…是支持数值查询的,当字段类型是数值时 between A and B等同于>=A and <=B
当between and用于数值查询时,常用于字段类型为int、decimal等。
  1. -- 查询用户表中年龄在24到25之间的用户
  2. select * from user where age between 24 and 25;
  3. 等同于
  4. select * from user where age >= 24 and age <= 25;
复制代码
查询结果如下:

2.2、between and时间范围查询

留意:


  • 当日期字段为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类型查询不带时分秒
  1. -- 查询用户表中创建时间在2024-10-29到2024-10-30之间的数据
  2. select * from user where create_time between '2024-10-29' and '2024-10-30';
  3. 等同于
  4. 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类型查询时,一定要留意手动拼接时分秒,否则查询数据可能不符合预期。
精确示例
  1. -- 查询用户表中创建时间在2024-10-29到2024-10-30之间的数据
  2. select * from user where create_time between '2024-10-29 00:00:00' and '2024-10-30 23:59:59';
  3. 等同于
  4. select * from user where create_time >= '2024-10-29 00:00:00' and create_time  <= '2024-10-30 23:59:59';
复制代码
查询结果:

2.3、not between and示例

not between and表示指定范围之外的值。not between A and B相称于 < A or >B。
示例:查询年龄不在24到25之间的用户
  1. -- 查询用户表中年龄不在24到25之间的用户
  2. select * from user where age not between 24 and 25;
  3. 等同于
  4. select * from user where age < 24 or age > 25;
复制代码
查询结果如下:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莫张周刘王

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表