【MySQL】的日期计算

作者: fa3a76157bc7 | 来源:发表于2018-10-16 11:12 被阅读3次

数据分析写起sql真的很烦啊。尤其是遇到各种日期计算。
这里总结了一些MySQL中的常用日期计算,希望给和我一样的sql苦手一点启发呀! love&peace ~(╹▽╹)

1、日期加减常数

这里用 reg 表里的一条数据reg_time 2018-09-10 13:00:00来做基础数据

a. INTERVAL加减时间单位

举个栗子:

SELECT 
    reg_time - INTERVAL 5 day   as mimus_5D, # - 5天 
    reg_time + INTERVAL 5 day   as plus_5D,  # + 5天
    reg_time - INTERVAL 5 month as minus_5M,  # - 5个月
    reg_time - INTERVAL 5 year  as minus_5Y  # - 5年
  FROM  `reg`
;
interval执行结果

b. 用DATE_ADD函数

与前一个类似,只是调整了参数顺序

SELECT 
    DATE_ADD(reg_time, INTERVAL -5 day) as mimus_5D,
    DATE_ADD(reg_time, INTERVAL 5 day) as plus_5D,
    DATE_ADD(reg_time, INTERVAL -5 month) as minus_5M,
    DATE_ADD(reg_time, INTERVAL -5 year) as minus_5Y
    FROM `reg`
;

同样的结果。
两个函数的时间单位都同样支持hour/minute/second

2、计算两个日期之间的天数

这里主要是用DATEDIFF来计算间隔的天数。
这次虚构一个log表来当栗子

uid reg_date log_date
1 2018-09-10 2018-09-20
SELECT DATEDIFF(log_time, reg_time) #DATEDIFF(晚日期,早日期 )
FROM `log`

结果是10

这里要注意的一点是,SQL Server 中求日期间隔的函数也是DATEDIFF,但是用法是DATEDIFF(返回的时间单位,早日期, 晚日期),相较于 MySQL 多了一个单位参数,并且日期的顺序是相反的(其实日期参数并无要求只是遵循先后顺序会避免结果出现负数)。如果在 MySQL 中加入第一个单位参数是会报错的。

相关文章

网友评论

    本文标题:【MySQL】的日期计算

    本文链接:https://www.haomeiwen.com/subject/zpgeoftx.html