1 Star 0 Fork 1

杨超 / mysql学习

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
5范围查询.md 3.70 KB
一键复制 编辑 原始数据 按行查看 历史
杨超 提交于 2021-06-28 09:14 . add 5范围查询.md.

范围查询

范围查询是用来查询给定的两个值之间的数据,通常使用BETWEEN …… AND 和 NOT …… BETWEEN …… AND来指定范围条件

在使用BETWEEN …… AND查询条件的时候,指定的第一个值必须小于第二个值,因为BETWEEN …… AND的实质是查询条件大于或者等于第一个值,并且小于等于第二个值的简写形式,等价于比较运算符">=....<="

  1. 查询两个值之间的数据
SELECT
	id AS '商品id',
	`name` AS '商品名称',
	original_price AS '价格'
FROM
	goods
WHERE
	original_price BETWEEN 1000
AND 2000;
  1. 查询两个日期之间的数据

查询两个日期之间的数据也可以使用BETWEEN来实现,可以使用日期类型的数据作为查询条件

SELECT
	id,
	`name`,
	addtime
FROM
	goods
WHERE
	addtime BETWEEN '2016-07-20 09:58:53'
AND '2016-07-20 10:58:53';
  1. 使用日期函数

通过GETDATE()函数和DATEADD()函数,获取当天的日期和前一天的日期,在通过使用BETWEEN……AND来查询在这两个日期之间的数据

SELECT GETDATE();
  1. 查询不在两个数之间的数据

可以使用NOT BETWEEN…… AND 来实现

SELECT
	id,
	`name`,
	original_price
FROM
	goods
WHERE
	original_price NOT BETWEEN 2000
AND 3000;
  1. 日期时间查询

5.1 转换日期格式

有时候数据库中表存储的日期可能不是规范的日期形式,为了方便用户查看,需要将日期转换为四位数字的年份,同时改变日期格式,如将‘02.09.02’转换为‘2002-09-02’的格式

    1. 长日期格式转换为短日期的格式

CONVERT(char(10),getdat(),120) 将日期转换成yyyy-mm-dd格式时间,其中120是格式代码,char(10)是指取出前10位字符

    1. 将日期中的‘-’转换为'/'

REPLACE()函数寻找列值中的'-',将其转换为'/'

-- 查询所有图书信息
SELECT id ,`name`,current_price,addtime FROM goods ORDER BY addtime;

-- 把长日期格式数据转换为短日期格式数据

SELECT  id,`name`,current_price,CONVERT(char(10),addtime,120) AS '录入日期' FROM goods ORDER BY id;

-- 将日期的格式中的'-'转换为'/'

SELECT id,`name`,`REPLACE`(CONVERT(char(10),addtime,120,'-','/')  AS '录入日期'  FROM goods ORDER BY id;

5.2 计算两个日期的时间间隔天数

使用DATEDIFF()函数计算日期间隔天数

语法(MYSQL)

DATEDIFF(expr1,expr2)

参数说明:

该函数返回其实时间expr1和结束时间expr2之间的天数,expr1和expr2为日期或者date-and-time表达式,计算中只取这些值的日期部分

SELECT
	书号,书名, CONVERT (
		CHAR (10),
		出版日期,120
	) 出版日期, CONVERT (
		CHAR (10),
		下一次出版日期,120
	) 出版日期, DATEDIFF(
		DAY,
		出版日期,下一次出版日期
	) 两次出版相差的天数
FROM
	goods

5.3 按照指定日期查询数据

    1. DAY()函数

返回代表指定的日期的天日期部分的整数

DAY(date)

参数说明:

date: 类型为datetime 或者smalldatetime的表达式

DAY()函数返回值的数据类型为int

SELECT DAY(0) AS MY_DAY1,DAY('02/03/2018') AS MY_DAY2
    1. MONTH()函数

实现按月查询

SELECT "month number" = MONTH('03.11.2017')
    1. YEAR()函数

返回表示指定日期中的年份的整数

SELECT
YEAR(-1) AS MY_YEAR1,
YEAR(3) AS MY_YEAR2,
YEAR('08/13/2018') AS MY_YEAR3;

举例 查询日期的月和年

SELECT
	id,
	`name`,
	is_sale,
	addtime
FROM
	goods
WHERE
	MONTH (addtime) = 7
AND YEAR (addtime) = 2016
AND is_sale = 1;
1
https://gitee.com/yashirochaos/mysql-learning.git
git@gitee.com:yashirochaos/mysql-learning.git
yashirochaos
mysql-learning
mysql学习
master

搜索帮助