Author:赵志乾
Date:2019-11-24
Declaration:All Right Reserved!!!
使用mysql进行数据管理时,经常会涉及到日期和时间的处理。mysql本身为使用者提供了一系列日期和时间处理函数,方便我们使用。以下是常用的3个日期时间函数
1、日期加减函数
应用场景: 基于某一日期时点进行时间偏移计算。比如,给定日期时点A,计算早于或晚于A一段时间间隔的日期时点B。
函数: ADDDATE(date,INTERVAL exp unit)和ADDDATE(date,days)
注:第二个函数其实是第一个函数的特例,只应用于时间间隔为天的偏移计算。而当两个函数中的exp或days取负数时,效果等效于SUBDATE,也就是ADDDATE(date,INTERVAL -|exp| unit)等效于SUBDATE(date,INTERVAL |exp| unit),ADDDATE(date,-|days|)等效于SUBDATE(date,|days|)。
// 示例1: 日期时点延后一日
SELECT ADDDATE('2019-11-24 20:00:00.000',INTERVAL 1 DAY)
结果: 2019-11-25 20:00:00
SELECT ADDDATE('2019-11-24 20:00:00',1)
结果: 2019-11-25 20:00:00
// 示例2: 日期时点提前一日
SELECT ADDDATE('2019-11-24 20:00:00.000',INTERVAL -1 DAY)
结果: 2019-11-23 20:00:00
SELECT ADDDATE('2019-11-24 20:00:00',-1)
结果: 2019-11-23 20:00:00
2、时间加减函数
应用场景: 基于某一(日期)时点进行时间偏移计算。比如,给定(日期)时点A,计算早于或晚于A一段时间间隔的(日期)时点B。
函数:ADDTIME(exp1,exp2)
注: ADDTIME可以看作是ADDDATE的扩展,或者说ADDDATE是ADDTIME的特例。因为ADDDATE要求第一个参数一定是日期时点,而ADDTIME的第一个参数既可以是日期时点,也可以是时间时点。
// 示例1: 日期时点延后1小时30分钟
SELECT ADDTIME('2019-11-24 20:00:00','1:30:00')
结果: 2019-11-24 21:30:00
// 示例2: 时间时点延后1小时30分钟
SELECT ADDTIME('20:00:00','1:30:00')
结果: 21:30:00
// 示例3: 日期时点延后1天
SELECT ADDTIME('2019-11-24 20:00:00','1 00:00:00')
结果: 2019-11-25 20:00:00
// 示例4: 时间时点延后1天
SELECT ADDTIME('20:00:00','1 00:00:00')
结果: 44:00:00
注意示例3和示例4之间的区别
3、日期提取函数
应用场景: 获取日期当日零点,即清除时分秒等数据。
函数: DATE(exp)
// 示例1: 提取日期时点当日零点
SELECT DATE('2019-11-24 20:00:00')
结果: 2019-11-24
// 示例2: 判定DATE函数是否是清零时分秒
SELECT DATE('2019-11-24 20:00:00')='2019-11-24 00:00:00'
结果: 1
参考资料:《mysql技术文档》