• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Mysql指定日期区间的提取方法

    在数据库搬砖的过程中,免不了要跟日期打交道,比如按日期汇总一些指标、统计某段时间内的总量等。

    如果是固定的日期还好,只需直接指定即可,但很多时候都是需要根据当前日期自适应变化的。比如:提取上周一到上周日的数据、提取上个月的数据、提取前N个月的数据。。。

    这些要求都有一个共同点,就是要视当前日期而定!那么,我们就需要首先获取当前日期的一些信息,如当前日期是本周第几天、本月第几天等,然后,才能做下一步处理。

    一、在提取所需日期区间之前,我们先介绍几个常用的函数

    -- 先运行这一句
    SET @t = '2018-07-26 11:41:29';
    -- 再运行这一句
    SELECT DATE(@t)当前日期,YEAR(@t) 年份, MONTH(@t)月份,WEEK(@t)本年第几周, DAY(@t) 本月第几天, 
    HOUR(@t)小时, MINUTE(@t)分钟, SECOND(@t)秒

    运行出来,结果是这样的:

    二、下面介绍几个常用的日期加减运算函数

    1、ADDDATE(expr, days) / SUBDATE(expr, days):

    ADDDAT函数有两个形参,第一个是基准日期,也即需要运算的日期;第二个是一个间隔表达式,形如:INTERVAL 1 HOUR,其中INTERVAL 是间隔的意思,中间的数字1可以换成任意整数,第三个hour可以替换成day/month/year等时间单位。

    SUBDATE同理,只不过变成了减法运算。

    完整的用法如下:

    SELECT ADDDATE('2018-07-26 11:41:29',INTERVAL 1 HOUR);
    SELECT SUBDATE('2018-07-26 11:41:29',INTERVAL 1 HOUR);

    2、DATE_ADD() / DATE_SUB():

    用法同ADDDATE(expr, days) / SUBDATE(expr, days)。

    三、日期区间截取

    接下来,利用上面介绍的日期函数的用法,就可以进行日期区间的截取了。

    1、上周

    -- 提取上周的日期区间
    SELECT CURDATE() NOW,
    ADDDATE(ADDDATE(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 1 DAY),-6),0) startdate,
    ADDDATE(DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 1 DAY),0) duetodate

    2、上月

    -- 上月
    SELECT CURDATE() NOW, 
    DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY), INTERVAL -1 MONTH) startdate,
    DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE()) DAY), INTERVAL 0 MONTH) duetodate

    3、前四个月

    -- 前四个月
    SELECT CURDATE() NOW, 
    ADDDATE(ADDDATE(CURDATE(),INTERVAL -DAY(CURDATE())+1 DAY), INTERVAL -4 MONTH) startdate,
    DATE_ADD(DATE_ADD(CURDATE(),INTERVAL -DAY(CURDATE()) DAY), INTERVAL 0 MONTH) duetodate

    4、上周四到本周三

    有时候不是按照自然周进行统计的,需要自定义一周的起止日期,可以按照下面的方式:

    SELECT ADDDATE(DATE_SUB(CURDATE(),INTERVAL (IF(WEEKDAY(CURDATE())IN(3,4,5,6),WEEKDAY(CURDATE()),WEEKDAY(CURDATE())+7 )) + 1 DAY),-3) startdate
    , ADDDATE(DATE_SUB(CURDATE(),INTERVAL (IF(WEEKDAY(CURDATE())IN(3,4,5,6),WEEKDAY(CURDATE()),WEEKDAY(CURDATE())+7 )) + 1 DAY),3)duetodate

    OK,至此就可以实现时间、日期的信息提取、任意区间的截取了~

    总结

    以上所述是小编给大家介绍的Mysql指定日期区间的提取方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    您可能感兴趣的文章:
    • Mysql中实现提取字符串中的数字的自定义函数分享
    上一篇:mysql 8.0.11 macos10.13安装配置方法图文教程
    下一篇:mysql遇到load data导入文件数据出现1290错误的解决方案
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Mysql指定日期区间的提取方法 Mysql,指定,日期区,间的,