- DATE_ADD:返回增加指定时间间隔后的日期。
- ADDDATE:返回增加指定单位(例如day,minute)时长后的日期时间。
- ADDTIME:返回两个日期时间相加后的结果。
- PERIOD_ADD:在原有年月(YYYYMM)基础上增加指定月份。
- PERIOD_DIFF:返回两个年月(YYYYMM)相减后的月份。
- DATE_DIFF:返回两个日期时间的间隔。
- SUBTIME:返回两个格式相同的日期时间参数相减后的结果。
- SUBDATE/DATE_SUB:返回减去指定天数后的日期时间。
- TIMESTAMPADD:返回增加指定单位(例如week)时长后的日期时间。
- TIMESTAMPDIFF:返回减去指定单位(例如week)时长后的日期时间。
DATE_ADD
date_add(unit, value, datetime)
- 命令说明:返回增加指定时间间隔后的日期。
- 参数说明:
- unit:单位,类型为VARCHAR。
涉及的时间单位类型有MILLISECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR。
- value:类型为BIGINT。
- datetime:日期时间字段,类型为TIMESTAMP、TIME或DATE。
重要 参数unit必须在参数datetime日期时间字段精度范围内。例如,不支持:
date_add('second', 31, current_date())
以及date_add('day', 12, current_time())
。
- unit:单位,类型为VARCHAR。
- 示例:
SELECT DATE_ADD('DAY', 31, current_date()) as col1, current_date() as col2; +-----------------------+-----------------------+ | col1 | col2 | +-----------------------+-----------------------+ | 2019-01-08 | 2018-12-08 | SELECT DATE_ADD('second', 31, current_time()) as col1, current_time() as col2; +-----------------------+-----------------------+ | col1 | col2 | +-----------------------+-----------------------+ | 16:37:55 | 16:37:24 | SELECT DATE_ADD('second', 31, current_timestamp()) as col1, current_timestamp() as col2; +-----------------------+-----------------------+ | col1 | col2 | +-----------------------+-----------------------+ | 2018-12-08 16:39:02.0 | 2018-12-08 16:38:31.0 |
ADDDATE
ADDDATE(date, INTERVAL expr unit)
ADDDATE(timestamp,INTERVAL expr unit)
- 命令说明:返回添加指定时间间隔后的日期,支持TIMESTAMP、DATE两种类型。
重要 参数2应在参数1的精度范围内。
- 示例:
SELECT addDate(now(), interval '2' day) as col1; +-----------------------+ | col1 | +-----------------------+ | 2018-12-10 16:45:42.3 | SELECT addDate(now(), interval '2' minute) as col1; +-----------------------+ | col1 | +-----------------------+ | 2018-12-08 16:48:20.4 |
ADDTIME
ADDTIME(expr1,expr2)
- 命令说明:返回expr1 + expr2的结果。
- 参数说明:参数为VARCHAR类型
- 示例:
SELECT ADDTIME('2007-12-31 23:59:59.999999', '1 1:1:1.000002') as col1; +-------------------------+ | col1 | +-------------------------+ | 2008-01-02 01:01:00.999 | SELECT ADDTIME('23:59:59.999999', '1:1:1.000002') as col1; +-------------------------+ | col1 | +-------------------------+ | 01:01:00.999 |
PERIOD_ADD
PERIOD_ADD(YYYYMM, monthNum)
- 命令说明:在原有年月基础上新增monthNum月份。
- 参数说明:
- YYYYMM:类型为bigint,例如201803。
- monthNum:类型为bigint,月数,即在原有年月基础上新增monthNum月份。
- 示例:
SELECT PERIOD_ADD(200801,20) as col1; +--------+ | col1 | +--------+ | 200909 |
PERIOD_DIFF
PERIOD_DIFF(YYYYMM, YYYYMM)
- 命令说明:返回参数1减去参数2的月份。
- 参数说明:YYYYMM类型为BIGINT。
- 示例:
SELECT PERIOD_DIFF(200802,200703) as col1; +------+ | col1 | +------+ | 11 |
DATE_DIFF
date_diff(unit, datetime1, datetime2)
- 命令说明:返回减去指定时间间隔后的日期。
- 参数说明:
- unit:类型为VARCHAR。
- datetime1、datetime2:类型为DATE或者TIMESTAMP。
重要 注意若datetime1、datetime2均为DATE类型,unit最小只能到DAY。
- 示例:
SELECT date_diff('day', current_date(), date_add('day', 2, current_date())) as col1; +------+ | col1 | +------+ | 2 | SELECT date_diff('minute', now(), date_add('day', 2, now())) as col1; +------+ | col1 | +------+ | 2880 |
SUBTIME
SUBTIME(expr1,expr2)
- 命令说明:返回expr1 - expr2后的时间,expr1与expr2格式相同。
- 示例:
SELECT SUBTIME('2007-12-31 23:59:59.999999','1 1:1:1.000002') as col1; +-------------------------+ | col1 | +-------------------------+ | 2007-12-30 22:58:58.999 |
SUBDATE/DATE_SUB
SUBDATE(date,INTERVAL expr unit)
SUBDATE(expr,days)
- 命令说明:返回参数1减去指定天数(参数2)后的日期。
- 参数说明:类型为TIMESTAMP、DATE或者VARCHAR。
- 示例:
SELECT DATE_SUB(now(), INTERVAL 31 DAY) as col1; +-----------------------+ | col1 | +-----------------------+ | 2018-11-07 16:56:36.0 | SELECT SUBDATE(current_date(), INTERVAL 31 DAY) as col1; +-----------------------+ | col1 | +-----------------------+ | 2018-11-07 | SELECT SUBDATE(now(), 31) as col1; +-----------------------+ | col1 | +-----------------------+ | 2018-11-07 16:58:17.0 |
TIMESTAMPADD
TIMESTAMPADD(unit,interval,datetime_expr)
- 命令说明:返回增加指定单位interval后的日期时间。
- 参数说明:类型为VARCHAR、DATE、TIMESTAMP或者TIME。
- 示例:
SELECT TIMESTAMPADD(WEEK,1,'2003-01-02') as col1; +------------+ | col1 | +------------+ | 2003-01-09 | SELECT TIMESTAMPADD(MONTH,1,'2003-01-02') as col1; +------------+ | col1 | +------------+ | 2003-02-02 |
TIMESTAMPDIFF
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
- 命令说明:返回datetime_expr2 - datetime_expr1的整数差,单位为unit。
- 参数说明:类型为VARCHAR、DATE、TIMESTAMP或者TIME。
- 示例:
SELECT TIMESTAMPDIFF(SECOND,curtime(),'20:39:39') as col1; +-------+ | col1 | +-------+ | 13120 | SELECT TIMESTAMPDIFF(DAY, now(), '2018-03-28 20:39:39') as col1; +------+ | col1 | +------+ | -254 | SELECT TIMESTAMPDIFF(DAY, curdate(), '2018-03-28') as col1; +------+ | col1 | +------+ | -255 |