當前位置:生活全書館 >

IT科技

> mysql date sub

mysql date sub

1、ate_sub函數簡介:

DATE_SUB()函數從DATE或DATETIME值中減去時間值(或間隔)。 下面說明了DATE_SUB()函數的語法:

DATE_SUB(start_date,INTERVAL expr unit);SQL

2、DATE_SUB()函數接受兩個參數:

start_date是DATE或DATETIME的起始值。

expr是一個字元串,用於確定從起始日期減去的間隔值。unit是expr可解析的間隔單位,例如DAY,HOUR等

mysql date sub

以下語句使用DATE_SUB()函數從2017年7月4日減去1天:

mysql> SELECT DATE_SUB('2017-09-04',INTERVAL 1 DAY) result;

+------------+

| result     |

+------------+

| 2017-09-03 |

+------------+

1 row in set

-- 求昨天的日期值: 將今天的日期值減去1天

mysql> SELECT DATE_SUB(curdate(),INTERVAL 1 DAY) result;

+------------+

| result     |

+------------+

| 2017-08-09 |

+------------+

1 row in set//

在這個例子中,開始日期是2017-09-04,它是yyyy-mm-dd格式。 INTERVAL 1 DAY被解析爲1天的時間間隔。DATE_SUB()函數的結果是2017-09-03的字元串值。

類似於DATE_ADD()函數,DATE_SUB()函數的返回值的數據類型可以是:

如果第一個參數是DATETIME,則返回值應爲DATETIME,或者該間隔具有時間元素,如小時,分鐘,秒等。

否則返回一個字元串。

mysql date sub 第2張

示例:

示例1

mysql> SELECT DATE_SUB('2017-09-04',INTERVAL 3 HOUR) result;

+---------------------+

| result              |

+---------------------+

| 2017-09-03 21:00:00 |

+---------------------+

1 row in set//

因爲間隔爲3小時,DATE_SUB函數的結果爲DATETIME值。

示例2 

MySQL DATE_SUB:負間隔值

expr在間隔值可以爲正或負數值。 如果expr爲負數,則DATE_SUB()函數的行爲與DATE_ADD()函數類似,如下例所示:

mysql> SELECT DATE_SUB('2017-07-03',INTERVAL -1 DAY) result;

+------------+

| result     |

+------------+

| 2017-07-04 |

+------------+

1 row in set//

示例3

MySQL DATE_SUB:無效或格式錯誤的日期
如果DATE_SUB()函數的第一個參數格式錯誤,日期無效或NULL,則DATE_SUB()函數返回NULL。

mysql> SELECT DATE_SUB('2017-02-29', INTERVAL - 1 DAY) result;

+--------+

| result |

+--------+

| NULL   |

+--------+

1 row in set//

在這個例子中,2017-02-29是一個無效的日期,因此結果爲NULL。 此外,MySQL發出警告,可透過以下查詢檢視語句。

mysql> SHOW WARNINGS;

+---------+------+----------------------------------------+

| Level   | Code | Message                                |

+---------+------+----------------------------------------+

| Warning | 1292 | Incorrect datetime value: '2017-02-29' |

+---------+------+----------------------------------------+

1 row in set//

以下示例演示了將異常日期或NULL傳遞給DATE_SUB函數,效果如下所示:

mysql> SELECT DATE_SUB('03/07/2017', INTERVAL 1 DAY) result;

+--------+

| result |

+--------+

| NULL   |

+--------+

1 row in setmysql> SELECT DATE_SUB(NULL, INTERVAL 1 DAY) result;

+--------+

| result |

+--------+

| NULL   |

+--------+

1 row in set//

標籤: mysql
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/zh-hant/dianzi/molz65.html