需求描述:
在使用mysql的過程中,需要對日期進行計算,比如對某個日期加上幾天,幾個小時等操作,
在此記錄下,date_add()函數的使用.
操作過程:
date_add()函數語法:
DATE_ADD(
date
,INTERVAL expr
unit
)
備注:date_add()和adddate()是同義詞.
參數說明:
date:起始日期或者起始時間
expr:指定的是一個間隔值,在起始時間中增加或者減少,注意:expr是一個字符串.對於負值間隔,可以以"-"開頭
unit:表示的是一個單位,比如,加上的是1天還是一個小時.
1.對某個日期加上n天的操作
mysql> select date_add('2018-06-26',INTERVAL '5' day); +-----------------------------------------+ | date_add('2018-06-26',INTERVAL '5' day) | +-----------------------------------------+ | 2018-07-01 | +-----------------------------------------+ 1 row in set (0.00 sec)mysql> select date_add('2018-06-26',INTERVAL '-5' day);
+------------------------------------------+
| date_add('2018-06-26',INTERVAL '-5' day) |
+------------------------------------------+
| 2018-06-21 |
+------------------------------------------+
1 row in set (0.01 sec)
備注:expr是字符串,如果加上的正值的天數,直接'5'即可,如果是減可以用date_sub函數或者expr為負值'-5'.
2.對某個日期加上n小時,n分鍾,n秒的操作
mysql> select date_add('2018-06-26 23:59:59',INTERVAL 1 hour); #對於日期加上1小時 +-------------------------------------------------+ | date_add('2018-06-26 23:59:59',INTERVAL 1 hour) | +-------------------------------------------------+ | 2018-06-27 00:59:59 | +-------------------------------------------------+ 1 row in set (0.00 sec)mysql> select date_add('2018-06-26 23:59:59',INTERVAL 1 minute); #對於日期加上1分鍾
+---------------------------------------------------+
| date_add('2018-06-26 23:59:59',INTERVAL 1 minute) |
+---------------------------------------------------+
| 2018-06-27 00:00:59 |
+---------------------------------------------------+
1 row in set (0.00 sec)mysql> select date_add('2018-06-26 23:59:59',INTERVAL 1 second); #對日期加上1秒鍾
+---------------------------------------------------+
| date_add('2018-06-26 23:59:59',INTERVAL 1 second) |
+---------------------------------------------------+
| 2018-06-27 00:00:00 |
+---------------------------------------------------+
1 row in set (0.00 sec)
3.對於某個日期加上n分鍾n秒
mysql> select date_add('2018-06-26 23:59:59',INTERVAL '1:1' MINUTE_SECOND); +--------------------------------------------------------------+ | date_add('2018-06-26 23:59:59',INTERVAL '1:1' MINUTE_SECOND) | +--------------------------------------------------------------+ | 2018-06-27 00:01:00 | +--------------------------------------------------------------+ 1 row in set (0.00 sec)
備注:一次性加上1分鍾,一秒.
4.對於某個日期加上n小時n分鍾n秒
mysql> select date_add('2018-06-26 23:59:59',INTERVAL '1:1:1' HOUR_SECOND); +--------------------------------------------------------------+ | date_add('2018-06-26 23:59:59',INTERVAL '1:1:1' HOUR_SECOND) | +--------------------------------------------------------------+ | 2018-06-27 01:01:00 | +--------------------------------------------------------------+ 1 row in set (0.00 sec)
備注:單位HOUR_SECOND就是從小時到秒.expr:HOURS:MINUTES:SECONDS
5.對某個日期加上n小時n分鍾
mysql> select date_add('2018-06-26 23:59:59',INTERVAL '1:1' HOUR_MINUTE); +------------------------------------------------------------+ | date_add('2018-06-26 23:59:59',INTERVAL '1:1' HOUR_MINUTE) | +------------------------------------------------------------+ | 2018-06-27 01:00:59 | +------------------------------------------------------------+ 1 row in set (0.00 sec)
備注:加上1小時1分鍾
6.對某個日期加上幾天幾小時幾分鍾幾秒鍾
mysql> select date_add('2018-06-26 23:59:59',INTERVAL '2 2:1:1' DAY_SECOND); +---------------------------------------------------------------+ | date_add('2018-06-26 23:59:59',INTERVAL '2 2:1:1' DAY_SECOND) | +---------------------------------------------------------------+ | 2018-06-29 02:01:00 | +---------------------------------------------------------------+ 1 row in set (0.00 sec)
備注:在日期上加上2天2小時2分鍾1秒鍾
unit(單位)和expr(表達式)對照表:
小結:
對於某個日期的計算,無論加上多少,都可以根據這個表格進行調整.對於日期的減法,盡量用date_sub()函數來實現.
文檔創建時間:2018年6月26日14:01:08
原文地址:https://www.cnblogs.com/chuanzhang053/p/9228798.html