【MySQL】(时间条件)数据查询整理,查询今天、昨天、本周、本月等的数据 ...

打印 上一主题 下一主题

主题 595|帖子 595|积分 1785

使用场景

MySQL使用日期统计数据或条件查询。
1.查询当天 (今天) 数据

  1. select * from 表名 where to_days(时间字段名) = to_days(now());
复制代码
  to_days函数:返回从0000年(公元1年)至当前日期的总天数
  2.查询昨天数据

  1. select * from 表名 where to_days(now()) - to_days(时间字段名) <= 1;
复制代码
3.查询近7天数据

  1. select * from 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名);
复制代码
  DATE() 函数返回日期或日期/时间表达式的日期部分。
2008-12-29 16:25:46.635 -> 2008-12-29
CURDATE() 函数返回当前的日期。
  4.查询近30天的数据

  1. select * from 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名);
复制代码
5.查询本月数据

  1. 方法一、
  2. select * from 表名 where DATE_FORMAT(时间字段名, '%Y%m') = DATE_FORMAT(CURDATE( ), '%Y%m');
  3. 方法二、
  4. select * from 表名 where YEAR(时间字段) = YEAR(CURDATE()) and  MONTH(时间字段) = MONTH(CURDATE());
  5. //定义本年的本月
  6. MONTH(时间字段) = MONTH(CURDATE())//获取当前月时间
  7. YEAR(时间字段) = YEAR(CURDATE())//获取当前年份
复制代码
  DATE_FORMAT() 函数用于以差异的格式表现日期/时间数据。
  1. DATE_FORMAT(date,format)
复制代码
date 参数是正当的日期。format 规定日期/时间的输出格式。
  6.查询上个月数据

  1. select * from 表名 where PERIOD_DIFF(DATE_FORMAT(now() , '%Y%m'), DATE_FORMAT(时间字段名, '%Y%m')) = 1;
复制代码
  PERIOD_DIFF() 函数返回两个周期之间的差值
  7.查询本季度数据

  1. select * from 表名 where QUARTER(时间字段) = QUARTER(now()) AND YEAR(时间字段) = YEAR(now());
复制代码
  QUARTER() 函数返回给定日期值(从 1 到 4 的数字)的一年中的季度。
YEAR()函数接受date参数,并返回日期的年份。
  8.查询上季度数据

  1. select * from 表名 where QUARTER(时间字段) = QUARTER(DATE_SUB(now(),interval 1 QUARTER))AND YEAR(时间字段) = YEAR(now());
复制代码
9.查询本年数据

  1. select * from 表名 where YEAR(时间字段) = YEAR(now());
复制代码
10.查询上年数据

  1. select * from 表名 where YEAR(时间字段) = YEAR(DATE_SUB(now(), INTERVAL 1 year));
复制代码
11.查询本周数据

  1. select * from 表名 where YEARWEEK(date_format(时间字段,'%Y-%m-%d')) = YEARWEEK(now());
复制代码
  YEARWEEK() 函数返回给定日期的年和周数(从 0 到 53 的数字)。
YEARWEEK(date, firstdayofweek)
这里有firstdayofweek,可选。 指定一周从哪一天开始。中国风俗:1 - 一周的第一天是星期一,第一周凌驾 3 天
  12.查询上周数据

  1. select * from 表名 where YEARWEEK(date_format(时间字段,'%Y-%m-%d')) = YEARWEEK(now())-1;
复制代码
13.查询上个月的数据

  1. select * from 表名 where date_format(submittime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')
  2. select * from 表名 where DATE_FORMAT(时间字段,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m');
  3. select * from 表名 where WEEKOFYEAR(FROM_UNIXTIME(时间字段,'%y-%m-%d')) = WEEKOFYEAR(now());
  4. select * from 表名 where MONTH(FROM_UNIXTIME(时间字段,'%y-%m-%d')) = MONTH(now());
  5. select * from 表名 where YEAR(FROM_UNIXTIME(时间字段,'%y-%m-%d')) = YEAR(now()) and MONTH(FROM_UNIXTIME(时间字段,'%y-%m-%d')) = MONTH(now());
  6. select * from 表名 where 时间字段 between 上月最后一天 and 下月第一天;
复制代码
14、查询10分钟以内的数据

  1. select * from 表名 where 时间字段 >= CURRENT_TIMESTAMP - INTERVAL 10 MINUTE;
复制代码
15.查询一段时间的数据

  1. SELECT * FROM 表名 WHERE 时间字段 BETWEEN 一段时间的开始 AND 一段时间的结束;
  2. SELECT * FROM 表名 WHERE date_format(时间字段,'%Y-%m-%d') BETWEEN date_format(一段时间的开始,'%Y-%m-%d') AND date_format(一段时间的结束,'%Y-%m-%d');
复制代码
  使用BETWEEN AND 查到的时间段数据是不包罗后面的界限的。可以使用DATE_SUB加一天减一秒的方式扩大后界限,大概使用TO_DAYS转换为天数。
  16、查询距离如今6个月内的数据

  1. select * from 表名 where 时间字段 between DATE_SUB(now(), INTERVAL 6 MONTH) and now();
复制代码
MySQL日期函数: 菜鸟教程——MySQL日期函数

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表