MySQL date_add()函数
轉載自? ?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 23:59:59.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_MINUTE,5/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調整日,月或年
如果您將MONTH,YEAR或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值。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的MySQL date_add()函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL datediff()函数
- 下一篇: RSHosting提供多种选项,包括托管