看到有一些博客说 between and 有不含边界的情况,于是测试了一把,记录如下。先说结论:between and 不存在不含边界的情况

1. between and 是包含边界的

id between 3 and 5 等价于 id >=3 and <=5;

mysql> select * from t1;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | siri01 | 200 |
| 2 | siri02 | 30 |
| 3 | siri20 | 40 |
| 4 | siri31 | 22 |
| 5 | siri04 | 60 |
| 7 | siri30 | 80 |
| 8 | siri43 | 100 |
| 9 | siri40 | 25 |
| 10 | siri15 | 20 |
| 15 | siri06 | 100 |
| 20 | siri89 | 400 |
+----+--------+------+
mysql> select * from t1 where id between 3 and 5;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 3 | siri20 | 40 |
| 4 | siri31 | 22 |
| 5 | siri04 | 60 |
+----+--------+------+
3 rows in set (0.00 sec)
mysql> select * from t1 where id not between 3 and 5;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | siri01 | 200 |
| 2 | siri02 | 30 |
| 7 | siri30 | 80 |
| 8 | siri43 | 100 |
| 9 | siri40 | 25 |
| 10 | siri15 | 20 |
| 15 | siri06 | 100 |
| 20 | siri89 | 400 |
+----+--------+------+
8 rows in set (0.00 sec)

2. between and ,datetime 类型的字段

mysql> create table t3(id bigint primary key auto_increment,date datetime);
mysql> select * from t3;
+----+---------------------+
| id | date |
+----+---------------------+
| 1 | 2021-06-16 03:00:00 |
| 2 | 2021-06-15 00:00:00 |
| 3 | 2021-06-14 00:00:00 |
| 4 | 2021-06-13 01:00:00 |
| 5 | 2021-06-12 09:00:00 |
+----+---------------------+
mysql> select * from t3 where date between '2021-06-13' and '2021-06-15';
+----+---------------------+
| id | date |
+----+---------------------+
| 2 | 2021-06-15 00:00:00 |
| 3 | 2021-06-14 00:00:00 |
| 4 | 2021-06-13 01:00:00 |
+----+---------------------+
MySQL 对日期的查询默认是 00:00:00, 上面的查询实际上是 between '2021-06-13 00:00:00' and '2021-06-15 00:00:00' mysql> select * from t3 where date between '2021-06-13' and '2021-06-16';
+----+---------------------+
| id | date |
+----+---------------------+
| 2 | 2021-06-15 00:00:00 |
| 3 | 2021-06-14 00:00:00 |
| 4 | 2021-06-13 01:00:00 |
+----+---------------------+ 虽然有一条 2021-06-16 的记录,但是不满足 00:00:00 的查询条件。并不是不包含边界。这里容易造成一种不含边界的错觉。
像 datatinme 的字段查询,查询日期应 cast('2021-06-13' data) 转换一下类型。

MySQL between and 边界测试的更多相关文章

  1. MySQL Cluster搭建与测试

    MySQL Cluster是一个基于NDB Cluster存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等高级功能.和Oracle Real Cluster Ap ...

  2. 关于mysql的自增测试,innodb和myisam下的不同表现

    关于mysql的自增测试,innodb和myisam下的不同表现 innodb引擎下的自增id测试 1 innodb引擎下,如果显示insert了最大值,那么下次的AUTO_INCREMENT值就是这 ...

  3. mysql router 自动failover测试

    mysql router 启动服务文件内容: [root@monitor mysqlrouter]# cat /etc/init.d/mysqlrouter#! /bin/bash## mysqlro ...

  4. mysql优化之sakila测试数据库

    下载地址,选择相应的版本来进行安装测试 http://dev.mysql.com/doc/index-other.html 相关说明 http://dev.mysql.com/doc/sakila/e ...

  5. mysql字符集编码乱码测试如下

    创建三个表tb_latin1,tb_utf8,tb_gbk,编码分别为latin1/utf8/gbk “你好a”字符串编码如下GBK : %C4%E3 %BA%C3 %61UTF-8 : %E4%BD ...

  6. Mysql取随机数据效率测试(400W条中读取100条)

    测试数据表的创建在文章:http://www.cnblogs.com/wt645631686/p/6868192.html 先看一下我的SQL方案 SELECT * FROM `emp` WHERE ...

  7. mysql MHA高可用测试

    [环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 [测试步骤:自动切换] 当前数据库状态: 系统 IP 主机名 备注 ...

  8. 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(四)

    这篇文章是对前面三篇的一个总结: 1.从测试结果来看,原生的数据库性能分别是:SQL Server(4587)>Oracle(271)>Mysql(145),测试数据量分别为5W.50W. ...

  9. 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(一)

    前段时间面试被问到了数据库方面的知识:比如选择什么样的数据库,如何优化,怎么加索引,于是想到了自己动手测试一下常用数据库的性能: 第一步,下载好JMeter之后打开运行.话说这个JMeter打开还真是 ...

随机推荐

  1. 内部类&异常

    /* 内部类 内部类类别: 成员内部类: 在一个类的成员位置定义另外一个类,那么另外 一个 类就称作为成员内部类. 成员内部类的访问方式: 方式1: 在外部类内提供一个方法创建内部类的对象进行访问. ...

  2. Eclipse项目上的红叉解决方案

    Eclipse项目上存在红叉,但是又不影响运行,同时展开项目未指明任何内容出错,可以按如下步骤进行处理: 0.查看Problems视图,定位错误,发现处理之: 1.检查Build Path中的各个依赖 ...

  3. JS实现判断点是否在多边形范围内

    一.说明 在GIS领域,判断点是否在多边形范围内是一个基础方法,这里主要说下实现原理. 原理比较简单,就是有一个GIS理论,一个点向一个方向发送射线,射线与多边形各个边相交的交点如果是奇数说明点在多边 ...

  4. IT职业技能图谱:架构师、H5、DBA、移动、大数据、运维...

    转载 作者:StuQ 文章收藏自微信:InfoQ   时隔近5个月,StuQ的小伙伴们再次出品了IT职业技能图谱更新版.这回除更新之前版本外,还添加了架构师.HTML 5.DBA等新的职业技能图谱.正 ...

  5. Solution -「Gym 102979E」Expected Distance

    \(\mathcal{Description}\)   Link.   用给定的 \(\{a_{n-1}\},\{c_n\}\) 生成一棵含有 \(n\) 个点的树,其中 \(u\) 连向 \([1, ...

  6. [LeetCode]66.加一(Java)

    原题地址: plus-one 题目描述: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 ...

  7. Session是什么?它与Cookie有什么区别?

    你好,是我琉忆. 今天我们讲一讲Session与Cookie的区别 1.Session对象 上一节简单介绍了Cookie,接下来简单介绍Session.Session和Cookie都是会话管理技术的一 ...

  8. 扫盲贴:2021 CSS 最冷门特性都是些啥?

    最近几年 CSS 界的大事之一是每年年底的 <State Of CSS>,也就是 CSS 现状调查,去年年底发布了<State Of CSS 2021>.其中关于特性这一章,会 ...

  9. SopringBoot2.x整合Redis

    1.导入相关依赖 <!-- redis 依赖 --> <dependency> <groupId>org.springframework.boot</grou ...

  10. [c语言]运算符的优先级与结合性

    c语言中运算符的优先级和结合性常常被人混淆一谈,本文目的在于简单谈谈两者的区别.本文举几个简单的例子说明,这些运算符也特别常用. 首先要明白的是:优先级决定表达式中各种不同的运算符起作用的优先次序:而 ...