- DAYOFWEEK与WEEKDAY(都是返回星期索引)
例如:2019.3.11为星期一
select DAYOFWEEK ('2019.3.11') 返回“2”;
select WEEKDAY ('2019.3.11') 返回“0”;
- DAYOFMONTH(返回一个月的第几天)
select DAYOFMONTH ('2019.3.11') 返回“11”;
- DAYOFYEAR(返回一年中的第几天)
select DAYOFYEAR ('2019.3.11') 返回“70”;
- MONTH(返回第几个月)
select MONTH ('2019.3.11') 返回“3”;
- DAYNAME(返回星期名字)
select DAYNAME ('2019.3.11') 返回“Monday”;
- MONTHNAME(返回月份名字)
select MONTHNAME ('2019.3.11') 返回“March”;
- QUARTER(返回季度)
select QUARTER ('2019.3.11') 返回“1”;
- YEAR(返回年份)
select YEAR ('2019.3.11') 返回“2019”;
- TO_DAYS与DATEDIFF函数都是计算两个时间间隔的天数
select to_days(now()) - to_days('20190308') 返回“3”;
select DATEDIFF(now(),'20190308') 返回“3”;
- TIMESTAMPDIFF函数
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() 实现。
函数 TimeStampDiff() 是MySQL本身提供的可以计算两个时间间隔的函数,语法为:TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其中unit单位有如下几种,分别是:FRAC_SECOND (microseconds), SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR 。该参数具体释义如下:
FRAC_SECOND 表示间隔是毫秒
SECOND 秒
MINUTE 分钟
HOUR 小时
DAY 天
WEEK 星期
MONTH 月
QUARTER 季度
YEAR 年
例如:select TIMESTAMPDIFF(week,'2019-03-04','2019-03-30') 返回“-3”;
- DATE_SUB函数
从DATE或DATETIME值中减去时间值(或间隔)。 下面说明了DATE_SUB()函数的语法:DATE_SUB(start_date,INTERVAL expr unit);
SQLDATE_SUB()函数接受两个参数:start_date是DATE或DATETIME的起始值。expr是一个字符串,用于确定从起始日期减去的间隔值。unit是expr可解析的间隔单位,例如DAY,HOUR等
例如:select DATE_SUB('2019-03-04',INTERVAL 1 WEEK) 返回“2019-02-25”;
1,查询当天(今天)的数据
SELECT * FROM `order` WHERE TO_DAYS(order_time) = TO_DAYS(NOW())
2,查询昨天的数据
SELECT * FROM `order` WHERE TO_DAYS(NOW()) - TO_DAYS(order_time) = 1
3,查询最近7天的数据(包括今天一共7天)
SELECT * FROM `order` where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(order_time)
4,查询最近30天的数据(包括今天一共30天)
SELECT * FROM `order` where DATE_SUB(CURDATE(), INTERVAL 30 DAY) < date(order_time)
5,查询当月(本月)的数据
SELECT * FROM `order` WHERE DATE_FORMAT(order_time, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m')
6,查询上个月的数据
SELECT * FROM `order` WHERE PERIOD_DIFF(DATE_FORMAT(NOW(),'%Y%m'), DATE_FORMAT(order_time,'%Y%m')) =1
7,查询本季度的数据
SELECT * FROM `order` WHERE QUARTER(order_time)=QUARTER(NOW())
8,查询上季度的数据
SELECT * FROM `order` WHERE QUARTER(order_time)=QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER))
9,查询当年(今年)的数据
SELECT * FROM `order` WHERE YEAR(order_time)=YEAR(NOW())
10,查询去年的数据
SELECT * FROM `order` WHERE YEAR(order_time)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR))