• mysql 日期类型计算


    1.情景展示

    在进行按日期统计数据的时候,我们经常需要对日期的开始时间和结束时间有要求;

    在mysql中,日期字段如何进行时间的计算呢?

    2.to_days()

    to_days(日期)函数:返回从0000年(公元1年)至指定日期的总天数(只计算日期不计算时间)。

    to_days(nows()):将当前日期转换成距离0年的天数;

    我们也可以用它来表示:今天

    to_days(日期):只计算日期不计算时间,举例证明:

    我们可以看到:

    不管是23:59:59还是00:00:00,2022年2月11日转换成天数后,都是738562天。

    2.1查询今天的数据

    select * from 表名 where to_days(时间字段名) = to_days(now());

    2.2查询昨天的数据

    SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) – TO_DAYS( 时间字段名) <= 1

    2.3查询近7天的数据

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(时间字段名)

    2.4查询近30天的数据

    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(时间字段名)

    2.5查询本月的数据

    SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) = DATE_FORMAT( CURDATE() , '%Y%m' )

    select * from 表名 where date_format(字段名,'%Y-%m')=date_format(now(),'%Y-%m')

    2.6查询上一月的数据

    SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now() , '%Y%m' ) , date_format( 时间字段名, '%Y%m' ) ) = 1

    select * from 表名 where date_format(字段名,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')

    2.7查询本季度的数据

    select * from 表名 where QUARTER(时间字段) = QUARTER(now());

    2.8查询上一季度的数据

    select * from 表名 where QUARTER(时间字段)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

    2.9查询本年的数据

    select * from 表名 where YEAR(时间字段)=YEAR(NOW());

    3.0查询上一年的数据

    select * from 表名 where year(字段名) = year(date_sub(now(),interval 1 year));

    3.1查询本周的数据

    SELECT * FROM 表名 WHERE YEARWEEK(date_format(字段名,'%Y-%m-%d')) = YEARWEEK(now());

    3.2查询上一周的数据

    SELECT * FROM 表名 WHERE YEARWEEK(date_format(字段名,'%Y-%m-%d')) = YEARWEEK(now()) - 1;

    3.3查询近6月的数据

    select * from 表名 where 字段名 between date_sub(now(),interval 6 month) and now();

    3.date_sub()

    DATE_SUB(date,INTERVAL expr unit)

    date:日期类型;

    expr:间隔数字(整数:正整数,时间会往前推;负整数,会往后推);

    unit:间隔单位。

    select SYSDATE(), DATE_SUB(SYSDATE(),INTERVAL 1 minute)
    union
    select SYSDATE(), DATE_SUB(SYSDATE(),INTERVAL -1 minute)

    有了这个函数,我们就可以取任何时间区间的日期啦(并且语法和Oracle类似)。

    4.DATE_ADD()

    2022年2月26日19:39:20

    DATE_ADD(date,INTERVAL expr unit)

    date:日期类型;

    expr:间隔数字(整数:正整数,时间会往前推;负整数,会往后推);

    unit:间隔单位。

    用法和DATE_SUB()一模一样。

    如:获取本月1号

    SELECT DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE()) + 1 DAY);

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

  • 相关阅读:
    设计模式学习笔记之状态模式
    设计模式学习笔记之观察者模式
    设计模式学习笔记之模板方法模式
    设计模式学习笔记之策略模式
    设计模式学习笔记之装饰者模式
    Comparable和Comparator接口的比较
    Java中关键字continue、break和return的区别
    斐波那契数列-兔子问题
    用Java编程计算猴子吃桃问题
    (转载)Java多线程入门理解
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/15886015.html
Copyright © 2020-2023  润新知