MySQL中BETWEEN AND(范围查询)

news2024/11/26 11:50:49

0 写在前面

MySQL 提供了 BETWEEN AND 关键字,用来判断字段的数值是否在指定范围内。

BETWEEN AND 需要两个参数,即范围的起始值和终止值。如果字段值在指定的范围内,则这些记录被返回。如果不在指定范围内,则不会被返回。

最近使用between and 去查询数据,但是在时间的临界点有一些问题,所以记录一下。

1 格式

使用 BETWEEN AND 的基本语法格式如下:

[NOT] BETWEEN 取值1 AND 取值2

其中:

  • NOT:可选参数,表示指定范围之外的值。如果字段值不满足指定范围内的值,则这些记录被返回。
  • 取值1:表示范围的起始值。
  • 取值2:表示范围的终止值。

2 SQL准备

BETWEEN AND 和 NOT BETWEEN AND 关键字在查询指定范围内的记录时很有用。

准备:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for person
-- ----------------------------
DROP TABLE IF EXISTS `person`;
CREATE TABLE `person`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `sex` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` int(11) NULL DEFAULT NULL,
  `date_birth` datetime NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of person
-- ----------------------------
INSERT INTO `person` VALUES (1, '小明', '男', 21, '2001-02-02 12:29:30');
INSERT INTO `person` VALUES (2, '小红', '女', 20, '2002-01-01 00:00:00');
INSERT INTO `person` VALUES (3, '张三', '男', 22, '2002-01-01 00:00:01');
INSERT INTO `person` VALUES (4, '李四', '男', 30, '1992-07-10 12:00:00');

SET FOREIGN_KEY_CHECKS = 1;

可以看到这样一个表

在这里插入图片描述

3 BETWEEN AND讲解

前面说了格式为:[NOT] BETWEEN 取值1 AND 取值2

正常查询:包括取值1 到 包括取值2

举例:用bewteen查询age:15-21之间的

SQL:

SELECT
	* 
FROM
	`person` 
WHERE
	age BETWEEN 15 
	AND 21

结果:

id	name	sex	age	date_birth
1	小明	男	21	2001-02-02 12:29:30
2	小红	女	20	2002-01-01 00:00:00

4 字段属性为datetime使用BEWTEEN AND

4.1 格式用 ‘年-月-日 时:分:秒’

如果用的是**‘年-月-日 时:分:秒’**查询,则也是左边包括右边也包括

举例:查询 date_birth:2001-01-01 00:00:00—2002-12-31 23:59:59

SQL:

SELECT
	* 
FROM
	`person` 
WHERE
	date_birth BETWEEN '2001-01-01 00:00:00'
	AND '2002-12-31 23:59:59'
id	name	sex	age	date_birth
1	小明	男	21	2001-02-02 12:29:30
2	小红	女	20	2002-01-01 00:00:00
3	张三	男	22	2002-01-01 00:00:01

查询的为:2001和2002年生日

4.2 格式用 ‘年-月-日’

如果用的是**‘年-月-日’**查询,则也是左边包括右边只包括临界点。

临界点的意思就是:只包括AND后那一天的00:00:00这个点,这一天剩下的时间不在查询范围之内。

SQL:

SELECT
	* 
FROM
	`person` 
WHERE
	date_birth BETWEEN '2001-01-01'
	AND '2002-01-01'

结果:

id	name	sex	age	date_birth
1	小明	男	21	2001-02-02 12:29:30
2	小红	女	20	2002-01-01 00:00:00

查询的为:2001年的生日,和2002年01月01日00:00:00的生日

结尾

总的来说 BETWEEN AND 好用,但是要注意的点就是在查询datetime格式的临界点问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621480.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS 装饰器

JS 装饰器 JavaScript 装饰器是一种以 符号开头的特殊语法,放在目标代码的前面用于包装或扩展代码功能。JavaScript 的装饰器语法目前仍处于提案阶段,现阶段使用的话需要通过 bable 等方式进行编译之后,才能在浏览器正常运行。装饰器分为两…

chatgpt赋能python:Python将空值替换成0

Python 将空值替换成 0 在数据分析和处理过程中,清洗数据往往是非常重要的一个环节。而在清洗数据过程中,经常会遇到空值(Missing Values)的问题。空值是指在数据集中出现的缺失值,它可能是由于数据输入错误、数据采集…

chatgpt赋能python:Python定义数据框:介绍和基础操作

Python定义数据框:介绍和基础操作 数据框是一种非常方便的数据结构,用于在Python中存储和处理表格数据。数据框可以看作是围绕Series对象构建的2D数据结构,Series是一种存储单个列的一维标记数组。在本文中,我们将介绍如何使用Py…

基于树莓派4B的车牌号识别

目录 0. 前言1. Raspbian系统烧录2. 更换清华源1. 查看树莓派系统版本2. 更换清华国内源3. Raspi镜像修改4. 系统源更新5. 错误排查 3. opencv安装4. 安装 hyperlprpip安装编译安装 5. 验证项目可行性 0. 前言 基于树莓派4B的车牌号识别系统 操作系统:Raspbian PC…

QT实例2(QTableWidget表格中增删数据)

案例介绍 本案例仅简单介绍QTableWidget部分使用方法,如在表格中插入或删除一行数据以及清空表格数据等。在添加数据时,设置了条件判断如正则表达式,若用户输入的数据不合法,则添加失败并提示用户错误的地方,便于用户…

IPsec的NAT穿越详解

问题场景 左边的支部,它的防火墙上联路由器,由于防火墙内部的接口使用的是私网地址,这就导致其无无法在公网上与对端防火墙进行IPsec的隧道建立 。所以必须在AR5上面不是NAT地址转换,由于一般使用的是NAPT,isakmp协议因…

ChatGPT评测

总结:ChatGPT很强大,用作学术方面的问答或者软件行业的辅助工具是有一定的作用,但是有些回答设置了限制,并且中文回答方面总是回答一半,需要一直让他继续说,篇幅不是很长,但是往往能说道精髓&am…

最新加装ChatGPT的New Bing申请流程(含出错解决办法)

两天获得New Bing测试资格流程记录 前言一、Microsoft Edge Dev浏览器下载二、Microsoft账号注册与登陆三、浏览器插件下载与添加四、加入候补名单五、写封信给Bing团队 前言 2023.03.08,下午收到了Microsoft Bing公司的邮件,提示测试资格申请成功&…

Qt Xlsx的基本使用

前言 在很多时候 ,我们需要将数据导出,之前我是将数据表导出为CSV格式,CSV文件虽然可以用Excel打开,但相对于真正的Xlsx文件,还是有许多不足的。偶然之间,发现了QtXlsx这个第三方库。 1、QtXlsx官网对QtX…

makefile工具的使用,编写一个或多个文件!(简单易上手)

一、make 和 makefile 是什么 1. make 是一个 命令。 2. makefile 是一个 文件,可以自动化的构建项目。 3. 编写 makefile 需要: (1)依赖关系 (2)依赖方法 二、什么是依赖关系、什么是依赖方法 下面我简单…

【Java】Java核心要点总结:60

文章目录 1. 乐观锁一定就是好的吗2. Synchronized和ReentrantLock有什么异同3. ReentrantLock是如何实现可重入性的4. 和Synchronized相比,可以重入锁ReentrantLock实现原理有什么不同5. AQS框架 1. 乐观锁一定就是好的吗 乐观锁并不一定好,它有自己的适…

chatgpt赋能python:Python实现将一张图片贴到另一张图片上

Python实现将一张图片贴到另一张图片上 在图像处理中,往往需要将多张图片合成一张图片。这里介绍使用Python实现将一张图片贴到另一张图片上的方法。 准备工作 在实现之前,我们需要安装Python的图像处理库Pillow和numpy。 可以通过pip进行安装&#…

创建一个SpringBoot项目

Spring的诞生是为了简化JAVA程序的开发的 快速开发Spring而诞生的 SpringBoot为了快速开发Spring而诞生的一个框架 1)什么是SpringBoot?为什么要学它?(重要) Spring是包含了众多工具方法的IOC容器 SpringBoot就是Spring框架的脚手架,它的存在就是为了快…

软考A计划-系统架构师-官方考试指定教程-(2/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

chatgpt赋能python:Python屏幕输入介绍:了解命令行输入的基本知识

Python屏幕输入介绍:了解命令行输入的基本知识 Python是一种使用广泛的编程语言,用于编写各种类型的应用程序,包括图形用户界面应用程序和基于命令行的应用程序。对于基于命令行的应用程序来说,屏幕输入非常重要。本文将介绍Pyth…

Object.assign用法

Object.assign用法 Object.assign是什么? 首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的? Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。简单来说,就是Obj…

stm32超声波测距代码

操作思路: 初始化时将trig和echo端口都置低,首先向给trig 发送至少10 us的高电平脉冲(模块自动向外发送8个40K的方波),然后等待,捕捉 echo 端输出上升沿,捕捉到上升沿的同时,打开定时…

(附源码)python音乐电台推荐系统的设计与实现 毕业设计 301210

音乐电台推荐系统 摘 要 随着人类向信息社会的不断迈进,风起云涌的信息时代正掀起一次新的革命,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的音乐电台推荐系统来管理音乐电台信息&#xff0…

OpenAI 接口文档-(中文版)-(一)

介绍 Introduction 您可以通过来自任何语言的 HTTP 请求、我们的官方 Python 绑定、我们的官方 Node.js 库或社区维护的库与 API 进行交互。 若要安装官方 Python 绑定,请运行以下命令: pip install openai 要安装官方的 Node.js 库,请在 No…

chatgpt赋能python:Python将空格改为换行符

Python将空格改为换行符 在Python编程中,经常需要对字符串进行处理,其中包括将空格替换为换行符。这篇文章将会介绍如何使用Python来实现这个目标,并分享一些关于字符串处理的技巧。 为什么要将空格改为换行符 将空格改为换行符可以让文本…