MySQL查询今天的数据(昨天、本月)

本文共 3,220 字,预计阅读时间 11 分钟

目录

对于MySQL而言,它有自己的函数来查询时间和日期,查询今天的数据也有相应的做法。 

数据库结构如下,进行说明:

CREATE TABLE `orders` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `order_name` varchar(45) COLLATE utf8_bin NOT NULL,
  `order_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

1.查询今天的数据

1.1方法一

SELECT * FROM orders WHERE TO_DAYS(order_time) = TO_DAYS(NOW())

参数说明: 

TO_DAYS()是MySQL自带的函数,其作用是查询指定日期到0年的天数。

NOW()是表示当前时间 

 

当前时间见详细说明 

1.2方法二

select * from orders where DAY(order_time)  = DAY(NOW())

参数说明: 

YEAR()返回指定时间的年份

MONTH()返回指定时间的月份

DAY()返回指定时间的日份

 

具体用法: 

SELECT YEAR('2021-06-05');##2021
SELECT MONTH('2021-06-05');##6
SELECT DAY('2021-06-05');##5

 2.查询昨天的数据

 

SELECT * FROM orders WHERE TO_DAYS(NOW()) - TO_DAYS(order_time) = 1

查询昨天的数据,只需要今天的天数比数据的时间多1天即可。

3.查询最近7天的数据 

最近7天,也包括今天。 

SELECT * FROM orders where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(order_time)

 参数说明:

DATE_SUB() 函数作用是对日期减去指定的时间间隔(天,月,季度...),返回新的日期。

date()函数时把值转换为日期类型。

CURDATE()是当前的日期,

具体用法:

SELECT DATE_SUB(CURDATE(), INTERVAL 7 DAY); ##2021-05-26
SELECT date(NOW()); ##2021-06-02

当前日期用法见详细说明。 

4.查询最近30天的数据 

最近30天,也包括今天。

SELECT * FROM orders where DATE_SUB(CURDATE(), INTERVAL 30 DAY) < date(order_time)

5.查询本月的数据 

5.1方法一

SELECT * FROM orders WHERE DATE_FORMAT(order_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')

参数说明: 

DATE_FORMAT()是对日期进行格式化,%Y%m表示只格式化到月 

具体用法: 

SELECT DATE_FORMAT('2021-06-02 10:30:25','%Y%m') ##202106

5.2方法二 

select * from orders where MONTH(order_time)  = MONTH(NOW()) 

6.查询上个月的数据 

SELECT * FROM orders WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(order_time,'%Y%m')) =1

参数说明:

PERIOD_DIFF()函数返回两日期之间的差异 

具体用法:

SELECT PERIOD_DIFF(20210530, 20210512); ##18

7.查询最近6个月的数据 

最近6个月,包含当前月份。

SELECT * FROM orders WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(order_time,'%Y%m')) <=5

8.查询本季度的数据 

SELECT * FROM orders WHERE QUARTER(order_time)=QUARTER(NOW())

参数说明:

QUARTER()函数返回给定日期值(1到4之间的数字)的一年中的季度。 

具体用法:

SELECT QUARTER("2021-05-01 09:34:21"); ##2

9.查询上季度的数据 

SELECT * FROM orders WHERE QUARTER(order_time)=QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER))

这里使用DATE_SUB()函数获取上个季度的日期。 

10.查询今年的数据 

SELECT * FROM orders WHERE YEAR(order_time)=YEAR(NOW())

11.查询去年的数据 

SELECT * FROM orders WHERE YEAR(order_time)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR))

这里使用DATE_SUB()函数获取上一年的日期。

就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 ! 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值