MySQL中between and的基本用法详解

 更新时间:2026年03月15日 15:21:15   作者:pangares  
文章介绍了MySQL中的BETWEEN AND操作符,它可以用于数值和日期类型的字段,包括边界值,通过示例展示了如何使用BETWEEN AND进行数值查询和时间查询,并强调了在处理datetime和timestamp类型时需要注意时间精度问题,需要的朋友可以参考下

BETWEEN AND操作符可以用于数值、日期等类型的字段,包括边界值

一、between and语法

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');

表数据如下

2.1、between and数值查询

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;

查询结果如下:

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类型查询不带时分秒

-- 查询用户表中创建时间在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';

查询结果:

2.3、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;

查询结果如下:

以上就是MySQL中between and的基本用法详解的详细内容,更多关于MySQL between and基本用法的资料请关注脚本之家其它相关文章!

相关文章

  • MySQL之索引结构解读

    MySQL之索引结构解读

    这篇文章主要介绍了MySQL之索引结构解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 通过实例解析MySql CURRENT_TIMESTAMP函数

    通过实例解析MySql CURRENT_TIMESTAMP函数

    这篇文章主要介绍了通过实例解析MySql CURRENT_TIMESTAMP函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • mysql如何比对两个数据库表结构的方法

    mysql如何比对两个数据库表结构的方法

    这篇文章主要介绍了mysql如何比对两个数据库表结构的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 设置MySQL中的数据类型来优化运行速度的实例

    设置MySQL中的数据类型来优化运行速度的实例

    这篇文章主要介绍了设置MySQL中索引的数据类型来优化运行速度的实例,主要是适当使用短字节的数据类型来处理短索引,需要的朋友可以参考下
    2015-05-05
  • Mysql临时表及分区表区别详解

    Mysql临时表及分区表区别详解

    这篇文章主要介绍了Mysql临时表及分区表区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • MySQL索引失效的几种情况详析

    MySQL索引失效的几种情况详析

    这篇文章主要给大家介绍了关于MySQL索引失效的几种情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL获得当前日期时间函数示例详解

    MySQL获得当前日期时间函数示例详解

    这篇文章主要给大家介绍了关于MySQL获得当前日期时间函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • MySQL压缩表创建方法示例详解

    MySQL压缩表创建方法示例详解

    本文给大家介绍MySQL压缩表创建方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-09-09
  • Mysql联表update数据的示例详解

    Mysql联表update数据的示例详解

    这篇文章主要介绍了Mysql联表update数据的示例详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • mysql如何查找连续出现n次以上的数

    mysql如何查找连续出现n次以上的数

    这篇文章主要介绍了mysql如何查找连续出现n次以上的数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论