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

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

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

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

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

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

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

类型(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语句以下:class

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;

执行结果以下:im

使用MySQL DATE_SUB()函数执行日期减操做的效果

从上图中代码执行的结果能够看出:img

  • 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中,还能够使用负数来指定时间。tab

使用DATE_SUB()函数执行日期减操做。SQL语句以下:di

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;

执行结果以下:

使用MySQL DATE_SUB()函数执行日期减操做的效果

从上图中代码执行的结果能够看出:

  • 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)函数的做用相同。

相关文章
相关标签/搜索