响应式网站代码规范,怎样查看网站服务商,建设部质监局网站,网站建设需要的人才转载自 MySQL date_add()函数
MySQL DATE_ADD函数简介
DATE_ADD函数将间隔时间添加到DATE或DATETIME值。 下面说明了DATE_ADD函数的语法#xff1a;
DATE_ADD(start_date, INTERVAL expr unit);DATE_ADD函数有两个参数#xff1a;
start_date是DATE或DATETIME的起始值。…转载自 MySQL date_add()函数
MySQL DATE_ADD函数简介
DATE_ADD函数将间隔时间添加到DATE或DATETIME值。 下面说明了DATE_ADD函数的语法
DATE_ADD(start_date, INTERVAL expr unit);DATE_ADD函数有两个参数
start_date是DATE或DATETIME的起始值。INTERVAL expr unit是要添加到起始日期值的间隔值。
根据参数DATE_ADD函数可能会返回一个DATETIME值或一个字符串
DATETIME - 如果第一个参数是DATETIME值或者如果间隔值具有时间元素如小时分钟或秒等。否则返回字符串。
MySQL DATE_ADD函数示例
我们来看几个例子来了解DATE_ADD函数的工作原理。
示例-1 加1秒到时间2017-12-31 23:59:59
mysql SELECT DATE_ADD(2017-12-31 23:59:59, INTERVAL 1 SECOND) result;
---------------------
| result |
---------------------
| 2018-01-01 00:00:00 |
---------------------
1 row in set示例-2 - 添加1天到时间2017-12-31 00:00:01
mysql SELECT DATE_ADD(2017-12-31 00:00:01,INTERVAL 1 DAY) result;
---------------------
| result |
---------------------
| 2018-01-01 00:00:01 |
---------------------
1 row in set示例-3 - 在时间2017-12-31 23:59:59上加1分1秒。
mysql SELECT DATE_ADD(2017-12-31 23:59:59, INTERVAL 1:1 MINUTE_SECOND) result;
---------------------
| result |
---------------------
| 2018-01-01 00:01:00 |
---------------------
1 row in set示例-4 - 在时间2000-01-01 00:00:00上加-1天5小时。
mysql SELECT DATE_ADD(2000-01-01 00:00:00, INTERVAL -1 5 DAY_HOUR) result;
---------------------
| result |
---------------------
| 1999-12-30 19:00:00 |
---------------------
1 row in set示例-5 - 添加1秒和999999微秒到时间2017-12-31 235959.000002
mysql SELECT DATE_ADD(2017-12-31 23:59:59.000002,INTERVAL 1.999999 SECOND_MICROSECOND) result;
----------------------------
| result |
----------------------------
| 2018-01-01 00:00:01.000001 |
----------------------------
1 row in setMySQL DATE_ADD函数使用说明
间隔处理
在间隔期间 -
INTERVAL expr unitexpr被视为一个字符串因此当为expr使用非字符串值时您应该小心。 例如间隔为HOUR_MINUTE5/2求值结果为2.5000(不是2.5)并被视为2小时5000分钟如下面的语句所示
mysql SELECT DATE_ADD(2017-01-01, INTERVAL 5 / 2 HOUR_MINUTE) result;
---------------------
| result |
---------------------
| 2017-01-04 13:20:00 |
---------------------
1 row in set为了确保非串间隔值的正确解释您应该使用CAST函数如下所示
mysql SELECT DATE_ADD(2017-01-01, INTERVAL CAST(6/4 AS DECIMAL(3,1)) HOUR_MINUTE) result;
---------------------
| result |
---------------------
| 2017-01-01 01:05:00 |
---------------------
1 row in set自动DATETIME转换
如果您将时间值添加到日期值则结果为DATETIME值如以下示例所示
mysql SELECT DATE_ADD(2017-01-01, INTERVAL 12 HOUR) result;
---------------------
| result |
---------------------
| 2017-01-01 12:00:00 |
---------------------
1 row in set起始日期无效
如果对第一个参数使用无效的日期DATE_ADD函数将返回NULL例如
mysql SELECT DATE_ADD(2017-02-30, INTERVAL 1 DAY) result;
--------
| result |
--------
| NULL |
--------
1 row in set如果要详细看到警告请使用SHOW WARNINGS语句
mysql SHOW WARNINGS;
-------------------------------------------------------
| Level | Code | Message |
-------------------------------------------------------
| Warning | 1292 | Incorrect datetime value: 2017-02-30 |
-------------------------------------------------------
1 row in set调整日月或年
如果您将MONTHYEAR或YEAR_MONTH的间隔添加到导致日期大于新月份的最大日期的日期则该日期将被调整为新月份的最大日期。
请看看以下示例
mysql SELECT DATE_ADD(2017-01-30, INTERVAL 1 MONTH) result;
------------
| result |
------------
| 2017-02-28 |
------------
1 row in set在这个例子中我们在2017年1月30日相加上了1个月结果是2017年2月28日。这一天被调整到2017年2月的最大天数。
如果是2月份有29天日期也将调整为第29天如下所示
mysql SELECT DATE_ADD(2012-01-30, INTERVAL 1 MONTH) result;
------------
| result |
------------
| 2012-02-29 |
------------
1 row in set在本教程中您已经学习了如何使用MySQL DATE_ADD函数将间隔添加到DATE或DATETIME值。