zoukankan      html  css  js  c++  java
  • MySQL查询今天的数据(昨天、本月)

    对于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()函数获取上一年的日期。

    就是这么简单,你学废了吗?感觉有用的话,给笔者点个赞吧 !
  • 相关阅读:
    php魔术常量,_CLASS_,_METHOD_,_FUNCTION_
    php里parent,::和self的分别
    rewrite例子集合
    PHP中::、->;、self、$this操作符的区别
    php中const和define的区别
    aliyun二级域名绑定
    数组操作函数8
    http 301 和 302的区别
    lnmp引发的fpm502错误!
    关于php下开发的跨域问题总结(全)
  • 原文地址:https://www.cnblogs.com/zys2019/p/14839941.html
Copyright © 2011-2022 走看看