mysql 中 DATE_ADD(date,INTERVAL expr type) 和

DATE_SUB(date,INTERVAL expr type)

这些函数执行日期运算。 date 是一个 DATETIME 或DATE值,用来指定起始时间。 expr

是一个表达式,用来指定从起始日期添加或减去的时间间隔值。 Expr是一个字符串;对于负值的时间间隔,它可以以一个 ‘-’开头。

type 为关键词,它指示了表达式被解释的方式。

关键词INTERVA及 type 分类符均不区分大小写。

以下表显示了type

和expr 参数的关系:

type

值 预期的

expr 格式 #

------------------------------------------------

MICROSECOND MICROSECONDS

SECOND SECONDS

MINUTE MINUTES

HOUR HOURS

DAY DAY

WEEK WEEKS

MONTH MONTHS

QUARTER QUARTERS

YEAR YEARS

SECOND_MICROSECOND 'SECONDS.MICROSECONDS'

MINUTE_MICROSECOND 'MINUTES.MICROSECONDS'

MINUTE_SECOND 'MINUTES:SECONDS'

HOUR_MICROSECOND 'HOURS.MICROSECONDS'

HOUR_SECOND 'HOURS:MINUTES:SECONDS'

HOUR_MINUTE 'HOURS:MINUTES'

DAY_MICROSECOND 'DAYS.MICROSECONDS'

DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'

DAY_MINUTE 'DAYS HOURS:MINUTES'

DAY_HOUR 'DAYS HOURS'

YEAR_MONTH 'YEARS-MONTHS'

MySQL 允许任何expr 格式中的标点分隔符。表中所显示的是建议的 分隔符。若 date 参数是一个 DATE

值,而你的计算只会包括 YEAR、MONTH和DAY部分(即, 没有时间部分), 其结果是一个DATE 值。否则,结果将是一个

DATETIME值。

若位于另一端的表达式是一个日期或日期时间值 , 则INTERVAL expr type只允许在 + 操作符的两端。对于

–操作符, INTERVAL expr type 只允许在其右端,原因是从一个时间间隔中提取一个日期或日期时间值是毫无意义的。

(见下面的例子)。

mysql> SELECT '1997-12-31 23:59:59' + INTERVAL 1

SECOND;

-> '1998-01-01 00:00:00'

mysql> SELECT INTERVAL 1 DAY + '1997-12-31';

-> '1998-01-01'

mysql> SELECT '1998-01-01' - INTERVAL 1

SECOND;

-> '1997-12-31 23:59:59'

mysql> SELECT DATE_ADD('1997-12-31

23:59:59',INTERVAL 1 SECOND);

-> '1998-01-01 00:00:00'

mysql> SELECT DATE_ADD('1997-12-31

23:59:59',INTERVAL 1 DAY);

-> '1998-01-01 23:59:59'

mysql> SELECT DATE_ADD('1997-12-31

23:59:59',INTERVAL '1:1' MINUTE_SECOND);

-> '1998-01-01 00:01:00'

mysql> SELECT DATE_SUB('1998-01-01

00:00:00',INTERVAL '1 1:1:1' DAY_SECOND);

-> '1997-12-30 22:58:59'

mysql> SELECT DATE_ADD('1998-01-01

00:00:00',INTERVAL '-1 10' DAY_HOUR);

-> '1997-12-30 14:00:00'

mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31

DAY);

-> '1997-12-02'

mysql> SELECT DATE_ADD('1992-12-31

23:59:59.000002',INTERVAL '1.999999' SECOND_MICROSECOND);

-> '1993-01-01 00:00:01.000001'

若你指定了一个过于短的时间间隔值 (不包括type 关键词所预期的所有时间间隔部分), MySQL

假定你已经省去了时间间隔值的最左部分。 例如,你指定了一种类型的DAY_SECOND, expr

的值预期应当具有天、小时、分钟和秒部分。若你指定了一个类似 '1:10'的值, MySQL

假定天和小时部分不存在,那么这个值代表分和秒。换言之, '1:10' DAY_SECOND 被解释为相当于 '1:10'

MINUTE_SECOND。这相当于 MySQL将TIME 值解释为所耗费的时间而不是日时的解释方式。

假如你对一个日期值添加或减去一些含有时间部分的内容,则结果自动转化为一个日期时间值:

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1

DAY);

-> '1999-01-02'

mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1

HOUR);

-> '1999-01-01 01:00:00'

假如你使用了格式严重错误的日期,则结果为 NULL。假如你添加了 MONTH、YEAR_MONTH或YEAR

,而结果日期中有一天的日期大于添加的月份的日期最大限度,则这个日期自动被调整为添加月份的最大日期:

mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1

MONTH);

-> '1998-02-28'

End.

mysql 中的expr_mysql 中 DATE_ADD(date,INTERVAL expr type)[转载]相关推荐

  1. MySQL内置函数中的日期和时间函数详解

    标题:MySQL函数大全 出处:俊的博客 时间:Sat, 14 Mar 2009 14:33:22 +0000 作者:hhj 地址:http://hhj.gx.cn/post/308/ 内容: lec ...

  2. mysql 日期格式化 yyyymmdd_mysql中时间日期格式化

    这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAY ...

  3. mysql日期格式化 yyyymmdd_mysql中时间日期格式化

    这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: DATE_FORMAT(FROM_UNIXTIME('1997-10-04 22:23:00'),' ...

  4. mysql 日期相等_mysql中时间比较的实现

    MySql中时间比较的实现 unix_timestamp 函数可以接受一个参数,也可以不使用参数.它的返回值是一个无符号的整数.不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如 ...

  5. mysql算法函数_mysql中的函数总结

    mysql中常用日期时间函数 MySQL服务器中的三种时区设置: ①系统时区---保存在系统变量system_time_zone ②服务器时区---保存在全局系统变量global.time_zone ...

  6. mysql 中类似dateadd_MySQL查询中的DATEADD或DATE_ADD?

    您需要在MySQL中使用DATE_ADD(). 语法如下DATE_ADD(NOW(), INTERVAL yourValue MINUTE); 也可以使用算术运算符. 语法如下NOW() + INTE ...

  7. setTimeStamp()与setDate()区别 如何将java中Date存入mysql中的datetime中,字符串怎么转换为日期类型

    数据库 1.java.sql.Date 与 java.util.Date java.sql.Date是从java.util.Date中继承而来 假设 dates1(java.sql.Date)要赋值给 ...

  8. oracle的date_add,SQL Server 中add函数到 oracle date add的操作

    SQL Server 中add函数到 oracle date add的操作 oracle date add minutes How does one add a day/hour/minute/sec ...

  9. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

最新文章

  1. C语言中前面有四个空格,在C语言编程中什么叫前导空格,什么叫尾随空 – 手机爱问...
  2. 关于ORACLE 10g中“ORA-12541:TNS:no listener”的问题解决方案
  3. 孙丕恕离开浪潮 仪器厂历时60年成为服务器龙头企业
  4. sklearn PCA特征降维
  5. NOIP 2007 普及组初赛试题(C++)(无答案)
  6. 关于Python ord()和chr()返回ASCII码和Unicode码的看法
  7. SQL读写CSV文件
  8. 谁抢光了你的火车票?
  9. java web程序设计任务教程——源码(全)
  10. react 如何引入打印控件 CLodop
  11. 植被农业数据下载网站整理
  12. 网络安全之密码安全基础
  13. shell中的美元符号
  14. 2020,SOS,既然不能选择,那便一路向前——在20年周期的新开端,聊聊泡沫、科技和经济--童亚斋
  15. 2021面试题——微信小程序面试题
  16. racte margin 居中 失效_微信朋友圈签名 个性 居中 酷炫 设置教程,支持 安卓 / 苹果!...
  17. JQuery 历史学习笔记整理
  18. linux怎么烧写文件系统,烧写LINUX最小文件系统
  19. 迁移学习前沿探究探讨:低资源、领域泛化与安全迁移
  20. 图像分类经典卷积神经网络—ZFNet论文翻译(中英文对照版)—Visualizing and Understanding Convolutional Networks(可视化和理解卷积网络)

热门文章

  1. android zbar使用
  2. 基于ETest开发某型号北斗/GPS接收机测试系统
  3. 【题库】OBCA认证考试(判断题)
  4. Similique cum vero non harum voluptatum quasi.Voluptatum quo veniam assumenda vel quisquam fugit.
  5. 开发iPhone应用程序(一)
  6. 服装设计研发办公应用APP
  7. iPhone应用提交流程:如何将App程序发布到App Store?
  8. hive split 函数
  9. ubuntu linux下测试实时网络网速流量监控的几种小工具命令方法
  10. 隐式转换函数高级使用