mysql query data for a certain period of time

1. Query data for today, yesterday, the past 7 days, and the past 30 days

  • (1) Query today's data
-- 方式 1
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE TO_DAYS(a.ApplyDate) = TO_DAYS(NOW());
-- TO_DAYS(字段) 函数,计算时间0开始计算到data时间点的天数(即从公元元年的第一天开始)
-- NOW():显示当前系统时间,格式为yyyy-MM-dd HH:mm:ss

-- 方式2
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE DATE(a.ApplyDate) = CURDATE(); 
-- DATE(字段) 函数,按天格式化时间,格式为:yyyy-MM-dd
-- CURDATE():显示当前系统时间,格式为yyyy-MM-dd
  • (2) Query yesterday's data
-- 方式 1
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE TO_DAYS(NOW()) - TO_DAYS(a.ApplyDate) = 1;

-- 方式2
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE DATE(a.ApplyDate) = DATE_SUB(CURDATE(), INTERVAL 1 DAY);
-- DATE_SUB(date,INTERVAL expr unit)函数,计算某个时间点之前的时间,date:指定的时间,expr间隔周期,unit周期单位(day、month、year)
  • (3) Query data for the past 7 days
SELECT * FROM guojia_zwfw_up_pro_accept a where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(a.ApplyDate);
  • (4) Query data for the past 30 days
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= DATE(a.ApplyDate);

2. Query the data of this week and last week

  • (1) Query data for this week
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE YEARWEEK(DATE_FORMAT(a.ApplyDate,'%Y-%m-%d')) = YEARWEEK(NOW());
-- YEARWEEK(NOW())函数,显示当前时间是本年第多少周
-- DATE_FORMAT(date,format)函数,按照指定样式格式化时间
  • (2) Query last week's data
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE YEARWEEK(DATE_FORMAT(a.ApplyDate,'%Y-%m-%d')) = YEARWEEK(NOW()) - 1;

3. Query the current month, last month, 6 months from the current data

  • (1) Query this month's data
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE DATE_FORMAT(a.ApplyDate, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m');
  • (2) Query last month's data
-- 方式 1
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE PERIOD_DIFF(DATE_FORMAT(now(), '%Y%m') , DATE_FORMAT(a.ApplyDate, '%Y%m')) = 1;
-- PERIOD_DIFF(P1,P2)函数返回两个日期之间的月份数

-- 方式 2
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE DATE_FORMAT(a.ApplyDate,'%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m');

-- 方式 3
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE YEAR(a.ApplyDate) = YEAR(NOW()) AND MONTH(a.ApplyDate) = MONTH(now()) - 1;
-- YEAR(date)计算年份
-- MONTH(date)计算月份

-- 方式 4 需要额外传参
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE a.ApplyDate BETWEEN '上月第一天' AND '本月第一天';
-- 优化向
SELECT * FROM guojia_zwfw_up_pro_accept a WHERE a.ApplyDate BETWEEN (SELECT date_add(curdate() - DAY(curdate()) + 1, INTERVAL -1 MONTH))  AND (SELECT date_add(curdate() - DAY(curdate()) + 1, INTERVAL 0 MONTH));
  • (3) Data from the current 6 months
SELECT * FROM sythqzk.guojia_zwfw_up_pro_accept WHERE ApplyDate BETWEEN DATE_SUB(NOW(),INTERVAL 6 MONTH) AND NOW();
-- 统计数据不含当月数据

4. Query current quarter and last quarter data

  • (1) Query the data of this quarter
SELECT * FROM guojia_zwfw_up_pro_accept WHERE YEAR(ApplyDate) = YEAR(NOW()) AND QUARTER(ApplyDate) = QUARTER(NOW());
-- QUARTER(date) 查询当前时间所属年份的季度
  • (2) Query the data of the previous quarter
-- 方式 1
SELECT * FROM guojia_zwfw_up_pro_accept WHERE YEAR(ApplyDate) = YEAR(NOW()) AND QUARTER(ApplyDate) = QUARTER(NOW()) - 1;

-- 方式 2
SELECT * FROM guojia_zwfw_up_pro_accept WHERE YEAR(ApplyDate) = YEAR(NOW()) AND QUARTER(ApplyDate) = QUARTER(DATE_SUB(NOW(),INTERVAL 1 QUARTER));

5. Query the data of this year and yesterday

  • (1) Query this year's data
SELECT * FROM guojia_zwfw_up_pro_accept WHERE YEAR(ApplyDate)=YEAR(NOW());
  • (2) Query last year's data
-- 方式 1
SELECT * FROM guojia_zwfw_up_pro_accept WHERE YEAR(NOW()) - YEAR(ApplyDate) = 1;

-- 方式 2
SELECT * FROM guojia_zwfw_up_pro_accept WHERE YEAR(ApplyDate)=YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR));

Guess you like

Origin blog.csdn.net/rao991207823/article/details/110530706