MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type)

DATE_SUB(d,INTERVAL expr type)函数返回起始日期d减去一个时间段后的日期。

expr是一个表达式,用来指定从起始日期添加或减去的时间间隔值。

expr是一个字符串。对于负值的时间间隔,它可以用一个负号“-”开头。

expr表达式与后面的间隔类型type对应。

MySQL中的日期间隔类型如下表所示:

类型(type值)含义expr表达式的形式

YEAR

YY

MONTH

MM

DAY

DD

HOUR

hh

MINUTE

mm

SECOND

ss

YEAR_MONTH

年和月

YY和MM之间用任意符号隔开

DAY_HOUR

日和小时

DD和hh之间用任意符号隔开

DAY_MINUTE

日和分钟

DD和mm之间用任意符号隔开

DAY_SECOND

日和秒钟

DD和ss之间用任意符号隔开

HOUR_MINUTE

时和分

hh和mm之间用任意符号隔开

HOUR_SECOND

时和秒

hh和ss之间用任意符号隔开

MINUTE_SECOND

分和秒

mm和ss之间用任意符号隔开

实例1

使用DATE_SUB()函数执行日期减操作。SQL语句如下:

mysql>SELECT DATE_SUB('2014-10-11 12:00:00',INTERVAL 1 SECOND) AS col1,

->DATE_SUB('2014-10-11 23:59:59',INTERVAL '1 1' YEAR_MONTH) AS col2;

执行结果如下:

从上图中代码执行的结果可以看出:

DATE_SUB('2014-10-11 12:00:00',INTERVAL 1 SECOND)函数将时间减少1秒后,返回的结果为“2014-10-11 11:59:59”。

DATE_SUB('2014-10-11 23:59:59',INTERVAL '1 1' YEAR_MONTH)函数中,时间间隔使用的是YEAR_MONTH;expr表达式中的年和月之间用空格隔开,因此该函数返回的结果是d日期中一年零一个月以前的日期和时间2013-09-11 23:59:59。

实例2

在MySQL中,还可以使用负数来指定时间。

使用DATE_SUB()函数执行日期减操作。SQL语句如下:

mysql>SELECT DATE_SUB('2014-10-11 11:59:59',INTERVAL -1 SECOND) AS col1,

->DATE_SUB('2014-10-11',INTERVAL '-1 -1' YEAR_MONTH) AS col2;

执行结果如下:

从上图中代码执行的结果可以看出:

DATE_SUB('2014-10-11 11:59:59',INTERVAL -1 SECOND)函数将时间增加1秒后,返回的结果为“2014-10-11 12:00:00”。

DATE_SUB('2014-10-11',INTERVAL '-1 -1' YEAR_MONTH)函数返回日期d中一年零一个月以后的日期2015-11-11。

因为是对负数进行的减操作,所以实际上进行的是日期的加操作。

提示

DATE_SUB(d,INTERVAL expr type)函数在指定修改的时间段时,也可以指定负值,负值代表相减,减去一个负值,得到的是对日期的相加,即返回以后的日期和时间。

DATE_SUB(d,INTERVAL expr type)函数中的type必须在上表中。而且,type必须是上表中的某一项,不能是其中几项的组合。因此,使用该函数时,一定要注意type的选择。

DATE_SUB(d,INTERVAL expr type)函数和SUBDATE(d,INTERVAL expr type)函数的作用相同。