看到有一些博客说 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. JSP页面乱码解决

    1. tomcat 设置端口处加上 URIEncoding="UTF-8" 2. tomcat 的bin文件夹下的catalina.bat中如下位置加上如下编码:-Dfile.en ...

  2. 群聊(udp)

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  3. 计算机的网络参考模型与5G协议

    计算机的网络参考模型与5G协议    1 分层思想 2  OSI参考模型 3  TCP/IP 协议族的组成 4  数据的封装与解封 5 层间通讯过程 6  空口协议 1.喝可乐的人不一定知道其生产的过 ...

  4. AI模型运维——NVIDIA驱动、cuda、cudnn、nccl安装

    目前大部分使用GPU的AI模型,都使用的英伟达这套. 需要注意的是,驱动.cuda.cudnn版本需要一一对应,高低版本互不兼容. 驱动和cuda对应关系:https://docs.nvidia.co ...

  5. 我来教你如何将cpu使用率up起来(shell脚本[含注释])

    这个脚本是为了逃过一些资源检测的,当一些机器当前使用率偏低,会被客户要求收回,那咋办呢?使用下面的脚本,就可以留住你的机器了 假设要求cpu使用率不能低于35% 使用方法:bash up_up_up. ...

  6. Python中类的定制

    1 class Chinese: 2 eye = 'black' 3 4 def eat(self): 5 print('吃饭,选择用筷子.') 6 7 class Guangdong(Chinese ...

  7. [镜像转换] ova文件转换成raw文件, 导入到openstack

    ova转raw 使用工具: qemu-img.libguestfs-tools.libguestfs-winsupport # 从vmware导出ova文件, tar 解压导出来的ova文件 $ ta ...

  8. BI开创者Tableau“出走中国”,中国BI用户该何去何从?

    11月,Tableau在发给客户的邮件中透露将停止中国的直销业务,加入阿里的合作体系.消息来的如此突然,Tableau的同仁.合作伙伴.客户.用户.爱好者,甚至友商,无一不感到震惊和担忧. 在我们数据 ...

  9. 还在被数据分析报告折磨?Smartbi让你解放双手

    数据分析报告贯穿了企业经营的时时刻刻,方方面面. 数据分析报告最常用于汇报分享:团队需要分享.沟通,数据分析师需要洞察数据.分析结果分享给企业领导.团队同事.大众媒体及更多的利益相关方. 数据分析报告 ...

  10. 缓冲区(buffer)与缓存(cache) 缓冲:缓解冲击,缓存:临时存储

    缓存与缓冲区 简要概述 缓存(cache):故名思意就是临时存储一下数据的存储器,其他设备可能等下还用的到数据.缓存区可以用来做缓冲区 缓冲区(Buffer):故名意思就是解决设备之间速度不匹配的问题 ...