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

Wesley13
• 阅读 787

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;

执行结果如下:

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

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

  • 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;

执行结果如下:

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
Mysql 更新时间(加上或者减去一段时间)
Mysql时间加减函数为date\_add()、date\_sub()定义和用法DATE\_ADD()函数向日期添加指定的时间间隔。DATE\_SUB()函数向日期减少指定的时间间隔。语法DATE\_ADD(date,INTERVALexprtype)DATE\_SUB(date,INTERVALexprtype)da
Wesley13 Wesley13
3年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这