MySQL中BETWEEN AND(范围查询)

这篇具有很好参考价值的文章主要介绍了MySQL中BETWEEN AND(范围查询)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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;

可以看到这样一个表

mysql between and,数据库,mysql,数据库

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格式的临界点问题。文章来源地址https://www.toymoban.com/news/detail-677161.html

到了这里,关于MySQL中BETWEEN AND(范围查询)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGP4 的体验 一站式 AI工具箱 -—Poe(使用教程)

    界面介绍: 是一个基于机器学习的聊天机器人,能够识别自然语言并做出智能回答。Sage通过自然语言处理和对话管理技术来实现对话的自然流畅和个性化,同时支持多种语言。Sage较为擅长语言相关的工作,例如创作文章,做摘要等。 是由开放人工智能(OpenAI)公司开发的一

    2024年02月11日
    浏览(100)
  • 第一章 熟悉Objective-C

    Objective—C语言是由Smalltalk演化而来,后者是消息型语言的鼻祖,所以该语言使用的“消息结构”而非“函数调用”。 1. 消息和函数调用之间的区别 关键区别在于: 使用消息结构的语言,其运行所应执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器决定。

    2024年01月18日
    浏览(39)
  • ChatGPT 报错“Oops!We ran into an issue while signing you in…”如何解决?

    ChatGPT报错:“Oops!We ran into an issue while signing you in, please take abreak and try again soon.” 说明:哎呀!我们在登录时遇到了一个问题,请稍作休息并尽快再试一次。 原因: 看到这个提示时,说明环境有问题,浏览器可能不干净,有缓存等。并非账号被封了! 解决: 请清理下浏览

    2024年01月20日
    浏览(40)
  • Dragonfly 基于 P2P 的文件和镜像分发系统

    作者: 孙景文、吴迪 网络下载 提起网络下载领域,你应该首先会想到基于 TCP/IP 协议簇的 C/S 模式。这种模式希望每一个客户机都与服务器建立 TCP 连接,服务器轮询监听 TCP 连接并依次响应,如下图: 上世纪末期,基于 C/S 模式的思想,人们发展了 HTTP , FTP 等应用层协议。

    2024年01月15日
    浏览(43)
  • 【板栗糖GIS】——如何安装ffmpeg

    【板栗糖GIS】——如何安装ffmpeg 目录 1. 解压安装包 2. 把bin路径放在环境变量中 3. 检测是否安装成功 下载软件包,我已经准备好资源,只是审核还未通过,过两天会加上安装包链接 1. 解压安装包 2. 把bin路径放在环境变量中   3. 检测是否安装成功 win+r打开窗口,输入cmd,调

    2024年02月16日
    浏览(40)
  • 【微信小程序】通过云函数获取用户openid

    1.pages同级目录下新建新文件夹,命名为cloudFunctions(其他名字也可以)。 2.project.config.json中添加以下内容,值为上一步创建的文件夹名字。编译一次后上一步创建的文件夹前图标就带“云”了。 3.app.js内的App中添加 1.右击cloudFunctions文件夹,点击【新建Node.js云函数】,命名为

    2024年02月10日
    浏览(57)
  • SpringBoot下使用自定义监听事件

    事件机制是Spring的一个功能,目前我们使用了SpringBoot框架,所以记录下事件机制在SpringBoot框架下的使用,同时实现异步处理。事件机制其实就是使用了观察者模式(发布-订阅模式)。 Spring的事件机制经过如下流程: 1、自定义事件,继承org.springframework.context.ApplicationEvent抽象类

    2024年02月14日
    浏览(78)
  • 国内网络摄像机的端口及RTSP地址

    默认IP地址:192.168.1.64/DHCP 用户名admin 密码自己设 端口:“HTTP 端口”(默认为 80)、“RTSP 端口”(默认为 554)、“HTTPS 端 口”(默认 443)和“服务端口”(默认 8000),ONVIF端口 80。 RTSP地址:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream 说明: username: 用户

    2024年02月14日
    浏览(74)
  • 华为认证云计算专家(HCIE-Cloud Computing)--练习题

    1.(判断题)华为云stack支持鲲鹏架构,业务可从X86过渡到鲲鹏。 正确答案:正确 2.(判断题)业务上云以后,安全方面由云服务商负责,客户自己不需要做任何防护 A 对 B 错 正确答案:B 3.( 多选题 ) 某企业有一个购物系统部署在HCS,可以选择哪些服务做安全保障? A WAF B HSS C DBAS

    2024年01月17日
    浏览(56)
  • 修改 Zookeeper 的客户端连接端口(默认2181端口)

    Zookeeper 的配置文件通常名为 zoo.cfg,位于 Zookeeper 安装目录的 /conf 目录下。初始配置如下: 修改客户端连接端口的步骤如下: 找到并打开 zoo.cfg 文件 修改客户端端口:找到或添加 clientPort 属性,将其更改为 2281。 保存并重启 Zookeeper 服务。 特别提醒 : 如果在 zoo.cfg 文件中

    2024年04月28日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包