MySQL BETWEEN AND包含边界值
select count(1) from table_a where my_date between '20230715' and '20230717';
上面的SQL我们发现只统计了20230715、20230716的数据,没有17日的数据。难道BETWEEN AND不包含边界吗?
MySQL中BETWEEN AND包含边界值吗?答案是肯定的,是包含边界的。那为什么有此疑问呢?
MySQL使用BETWEEN AND关键字进行范围查询,等同于>= && <=。适用于字符串类型、数值类型、日期、日期时间类型。
但是我们在编写SQL时传入的要么是字符串,要么是数值,针对字段的实际类型,会对我们查询条件值进行转化,转化的结果的多样性,就导致我们对于是否包含边界值的误解。出现此误解的主要是DATETIME类型。
再看上面的问题,我们发现my_date字段的类型是DATETIME,实际查询时MySQL将 string('20230715') 转化为了datetime('2023-07-15 00:00:00'),将 string('20230717') 转化成了datetime('2023-07-17 00:00:00'),再带回到SQL中
select count(1) from table_a where my_date between '2023-07-15 00:00:00' and '2023-07-17 00:00:00';
这样和查询结果匹配了。
出现这样的问题,是因为字段命名不规范,同时开发人员没有确认字段的具体类型,根据字段中文名或者英文名,先入为主,误将datetime类型作为date类型来查询,才编写了上面的SQL。实际datetime类型按照日期来过滤数据的写法有很多种,比如如下两种方法
- 编写完整的时间串作为条件值
-- 要不要考虑时间精度,请根据实际情况编写
select count(1) from table_a where my_date between '2023-07-15 00:00:00' and '2023-07-17 23:59:59.999999';
- 将字段值转换为date
select count(1) from table_a where date(my_date) between '2023-07-15' and '2023-07-17';
select count(1) from table_a where str_to_date(my_date, '%Y-%m-%d') between '2023-07-15' and '2023-07-17';
MySQL BETWEEN AND包含边界值的更多相关文章
- mysql判断是否包含某个字符的方法
mysql判断是否包含某个字符的方法用locate 是最快的,like 最慢.position一般实战例子:select * from historydatawhere locate('0',open ...
- mysql 列名中 包含斜杠或者空格的处理方式
今天客户那边遇到了一个比较奇葩的问题跑来问我,这个问题比较冷门,所以特别记录下. 问题描述 数据库的字段存在斜杠或者空格的时候,怎么用sql进行insert或者select操作. 问题解答 对于这种特 ...
- mysql中,创建包含json数据类型的表?创建json表时候的注意事项?查询json字段中某个key的值?
需求描述: 在mysql数据库中,创建包含json数据类型的表.记录下,在创建的过程中,需要注意的问题. 操作过程: 1.通过以下的语句,创建包含json数据类型的表 mysql> create ...
- 【数据库】MySQL 函数大全包含示例(涵盖了常用如时间、数字、字符串处理、数据流函数的和一些冷门的)
ps:博客园markdown不能自动生成列表,更好的阅读体验可访问我的个人博客http://www.isspark.com/archives/mysqlFunctionDesc 数学函数(Mathem ...
- mysql判断是否包含某个字符的方法和修改表中指定字段
用locate 是最快的,like 最慢.position一般实战例子:select * from historydatawhere locate('0',opennum) and locate('1 ...
- mysql 优化(包含sql语句的书写)
http://blog.chinaunix.net/uid-11640640-id-3426908.html mysql性能优化-慢查询分析.优化索引和配置 2012-11-30 15:18:42 ...
- mysql查询语句包含有关键字
查询mysql的时候,有时候mysql表名或者列名会有关键字.这时候查询会有错误.例如表名是order,查询时候会出错. 简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别,例如se ...
- [MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段
sql注入后可以通过该数据库获取所有表的字段信息 1. COLLATIONS表 提供有关每个字符集的排序规则的信息. COLLATIONS表包含以下列: COLLATION_NAME 排序规则名称. ...
- 4 MySQL程序概述(包含mysql配置文件配置原理)-学习笔记
以下参考MySQL5.5官方简体中文参考手册完美版--用于自学复习使用 4.1 程序概述 MySQL AB提供了几种类型的程序:一般放在/安装目录/bin下 1 MYSQL服务器和服务器启动脚本 my ...
- MySQL修改root密码的多种方法, mysql 导出数据库(包含视图)
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...
随机推荐
- 阿里巴巴开源大规模稀疏模型训练/预测引擎DeepRec
简介:经历6年时间,在各团队的努力下,阿里巴巴集团大规模稀疏模型训练/预测引擎DeepRec正式对外开源,助力开发者提升稀疏模型训练性能和效果. 作者 | 烟秋 来源 | 阿里技术公众号 经历6 ...
- 基于 Wasm 和 ORAS 简化扩展服务网格功能
简介: 本文将介绍如何使用 ORAS 客户端将具有允许的媒体类型的 Wasm 模块推送到 ACR 注册库(一个 OCI 兼容的注册库)中,然后通过 ASM 控制器将 Wasm Filter 部署到指定 ...
- [FAQ] IDE: Goland or PHPStorm 分屏操作
如图所示,文件上面点击右键,选择 Split Right 就可以在右侧分屏出编辑区. Refer:Goland下载 PHPStorm下载 Link:https://www.cnblogs.com/fa ...
- WPF 对接 Vortice 绘制 WIC 图片
本文告诉大家如何通过 Vortice 在 Direct2D 里面绘制图片,图片的来源是 WIC 加载出的图片 在上一篇博客 WPF 对接 Vortice 调用 WIC 加载图片 告诉了大家如何对接 V ...
- dotnet 6 在 System.Text.Json 使用 source generation 源代码生成提升 JSON 序列化性能
这是一个在 dotnet 6 早就引入的功能,此功能的使用方法能简单,提升的效果也很棒.使用的时候需要将 Json 序列化工具类换成 dotnet 运行时自带的 System.Text.Json 进行 ...
- ESP32 分区表
当你编译程序,发现 app partition is too small for binary 错误的时候,就涉及到 ESP32 分区表的内容了. 一.基本概念 在了解分区之前,先了解一下以下概率,便 ...
- 十、Doris操作参考手册
1.SQL参考 1.1 用户账户管理 1.2 集群管理 1.3 DDL 1.4 DML 2.函数参考 2.1 日期函数 2.2 字符串函数 2.3 聚合函数 2.4 Cast转换函数 ...
- docker 搭建LNMP环境
php7 仓库地址 https://gitee.com/haima1004/docker-lnmp
- 仅1.0MB,开源压缩软件7-Zip
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...
- kafka集群(zookeeper)
部署环境准备 kafka集群部署 ip地址 主机名 安装软件 10.0.0.131 mcwkafka01 zookeeper.kafka 10.0.0.132 mcwkafka02 zookeeper ...