mysql查询出去年某月_Mysql 查询某年,某季度,某月,某天搜索方法总结

假设有一张oa_item_info(项目信息表),其中created为项目创建时间字段

我们来进行如下的搜索

1.查询某年的数据

1.1 select * from oa_item_info where created like '2018-%';

1.2 select * from oa_item_info where left(created,4)='2018';

1.3 select * from oa_item_info where year(created)='2018';

今年的数据:

select * from oa_item_info where year(created)=year(now());

上一年的数据:

select * from oa_item_info where year(created)=year(date_sub(now(),interval 1 year));

date_sub()函数:date_sub

b710693407c79f2e3cbe476f53bdca31.png

93059917a0163979d40ebfec827fd0a0.png

2.查询某季度的数据

select QUARTER(created)  as quartername ,created from oa_item_info ;

先看一下quarter函数返回的数据,第一列是quartername,第二列是created

1-3月返回1,4-6月返回2,7到9月返回3,10到12月返回4

06821978f7372a0031f7b2ac721b89e3.png

并不是搜索本季度的数据:

select * from oa_item_info where QUARTER(created)=QUARTER(now());

这条sql语句返回的是所有年份,当前季度的数据,比如现在是4月,会把所有年份4到6月的数据都检索出来

搜索本季度的数据:

加上本年的限制条件

select * from oa_item_info where QUARTER(created)=QUARTER(now()) and year(created)=year(now());

3.查询某月的数据

select month(created) as monthname,created from oa_item_info;

看一下返回数据:第一列是monthname,第二列是created

7264a54458b1d461a3d1bdefedb681ea.png

所有年份2月的数据

select * from oa_item_info where month(created)=2;

加上年份的限定条件就可以了

4.查询某周的数据

select week(created) as weekname,created from oa_item_info ;

看一下返回数据:第一列是weekname,第二列是created

返回的是一年中的第几周

09970262d9ce55bcb0e4cf21f1c5c0e6.png

本周的数据:

select  created   from oa_item_info where week(created)=week(now()) and year(created)=year(now());

select * from oa_item_info where YEARWEEK(date_format(created,'%Y-%m-%d')) = YEARWEEK(now()) ;

看一下week和yearweek的区别:

数据库中加入两条周数一致的日期:

select week('2017-04-20');

966a3057e01d536a11266d6dfce055d5.png

select week('2018-04-25');

2ae3b4a2c501713879c63fea2c6785f4.png

看一下yearweek的返回值:

select yearweek('2018-04-25');

88702721401c7bb21b0dcf8348d9e2d6.png

看一下搜索结果:

select  created   from oa_item_info where week(created)=week(now());

week把两条年份不一样的都搜出来了

0f0a6315e0d9edebee8e6f24ddcc721e.png

select created  from oa_item_info where YEARWEEK(date_format(created,'%Y-%m-%d')) = YEARWEEK(now()) ;

select created  from oa_item_info where YEARWEEK(created) = YEARWEEK(now()) ;

不用date_format函数也可以

yearweek只搜出了今天的

0642fd447410fb0feb2fb4ef42be3339.png

值得注意的是,他们默认都是从周日开始算的,需要从周一开始计算时,需要加入第二个参数1:week(created,1)

date_format

68265a392bacc88867d74b6d04b69bf8.png

上一周的数据:

select  *   from oa_item_info where YEARWEEK(date_format(created,'%Y-%m-%d')) = YEARWEEK(now())-1;

5.查询某天的数据

今天的数据:

select  created from oa_item_info where to_days(created) = to_days(now());

to_days();返回从0年开始的天数;

select to_days(now())  ;

ada913ab496f7e222c76932e835c572d.png

from_days();根据天数,返回日期;

select from_days(737173)  ;

45bf7b134d892d8cbe0e0dc01d51c09e.png

昨天的数据:

这是很多博文的语句,看一下,现在是24号,会搜出今天和昨天数据

select  created from oa_item_info where to_days(now())-to_days(created)<=1 ;

cff9e5db7518879cfde216c177a3887a.png

select  created from oa_item_info where to_days(now())-to_days(created)=1 ;

搜出的是昨天的:

d256f3fe624f3e9dadc739c54c49f050.png

总结:

1.year(),从时间字段获取年

2.quarter(),从时间字段获取季度

3.month(),从时间字段获取月

4.week(),从时间字段获取周

5.yearweek(),从时间字段获取年和周

6.date_sub(), 从时间字段减去指定时间间隔

7.date_format(),时间格式化

8.to_days(),返回从0年开始的天数;

9.from_days(),根据天数,返回日期;

SELECT * FROM `ex`.`receive` WHERE  `channeleno` =12100444 TO_DAYS(`create_time`)  = TO_DAYS(NOW()) ORDER BY `id` DESC  LIMIT 0,50;

select * from 表 where date_format(日期,'%Y-%m-%d')='2014-04-01' 日期

select * from 表 where date_format(日期,'%Y-%m')='2014-04' 月份

select * from 表 where date_format(日期,'%Y')='2014' 年

就是date_format(日期,'%Y-%m-%d') 这里的参数长短

基本就是这些了,以后遇到相关的知识我再补充,这是我的第一篇真正的技术博客,喜欢的话,记得点个赞!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值