mysql求時間差的方法:1、使用TIMEDIFF()函數,語法「TIMEDIFF(dt1, dt2);」;2、使用IMESTAMPDIFF()函數,語法「TIMESTAMPDIFF(unit,begin,end); 」。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
mysql求時間差
#timediff()函數 - 計算兩個TIME或DATETIME值之間的差異。
timestampdiff()函數 - 計算兩個DATE或DATETIME值之間的差異。
TIMEDIFF
傳回兩個TIME
或DATETIME
##值之間的差值。請參閱
TIMEDIFF
TIMEDIFF(dt1, dt2);
TIMEDIFF函數接受兩個必須為相同類型的參數,即
TIME或
DATETIME。
TIMEDIFF函數傳回表示為時間值的
dt1 - dt2的結果。 因為
TIMEDIFF函數傳回
TIME值,所以其結果被限制在從
-838:59:59到
838: 59:59的
TIME
MySQL TIMEDIFF函數範例
#讓我們舉一個範例來計算兩個時間值之間的差異。mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff; +----------+ | diff | +----------+ | 02:00:00 | +----------+ 1 row in set
在這個例子中,我們計算了
12:00:00和
10:00:00之間的差值為:
02: 00:00。 以下範例計算兩個
DATETIME
mysql> SELECT TIMEDIFF('2010-01-01 01:00:00', '2010-01-02 01:00:00') diff; +-----------+ | diff | +-----------+ | -24:00:00 | +-----------+ 1 row in set
如果任一參數為
NULL,
TIMEDIFF函數將會傳回
NULL。
mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set, 1 warning (0.00 sec)
如果傳遞兩個不同類型的參數,一個是
DATETIME,另一個是
TIME,
TIMEDIFF函數也回傳
NULL。 mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set
下面說明了
TIMESTAMPDIFF
TIMESTAMPDIFF(unit,begin,end);
TIMESTAMPDIFF函數傳回
begin-end的結果,其中
begin和
end是
DATE或
DATETIME表達式。 TIMESTAMPDIFF
函數允許其參數具有混合類型,例如,
begin是
DATE值,
end可以是
DATETIME值。如果使用
DATE值,則
TIMESTAMPDIFF函數將其視為時間部分為
「00:00:00」的
DATETIME
unit
參數是決定(
end-begin
#MySQL TIMESTAMPDIFF函數範例
##以下範例將以月份值的形式傳回
2018-01-01
2018-06-01的差值:
mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result; +--------+ | result | +--------+ | 5 | +--------+ 1 row in set
如果您希望看到差值,只需要將
unit參數從MONTH改為
DAY,如下:
mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ | 151 | +--------+ 1 row in set
以下語句傳回兩個
DATETIME值(以分鐘為單位)的差異值:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
TIMESTAMPDIFF參數相關的時間部分。請參閱以下範例:僅考慮與
unit
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
MINUTE,因此,函數會如預期傳回45分鐘。 如果使用
SECOND
MINUTE,則TIMESTAMPDIFF函數將考慮
SECOND
mysql> SELECT TIMESTAMPDIFF(SECOND, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 2759 | +--------+ 1 row in set
使用MySQL TIMESTAMPDIFF函數計算年齡
首先,我們建立一個名為
persons的新表,用於示範。
USE testdb; CREATE TABLE persons ( id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(255) NOT NULL, date_of_birth DATE NOT NULL );
其次,向persons
表中插入一些行:INSERT INTO persons(full_name, date_of_birth) VALUES('John Doe', '1990-01-01'), ('David Taylor', '1989-06-06'), ('Peter Drucker', '1985-03-02'), ('Lily Minsu', '1992-05-05'), ('Mary William', '1995-12-01');
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, '2018-01-01') age FROM persons;
+----+---------------+---------------+-----+ | id | full_name | date_of_birth | age | +----+---------------+---------------+-----+ | 1 | John Doe | 1990-01-01 | 28 | | 2 | David Taylor | 1989-06-06 | 28 | | 3 | Peter Drucker | 1985-03-02 | 32 | | 4 | Lily Minsu | 1992-05-05 | 25 | | 5 | Mary William | 1995-12-01 | 22 | +----+---------------+---------------+-----+ 5 rows in set
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) age FROM persons;
+----+---------------+---------------+-----+ | id | full_name | date_of_birth | age | +----+---------------+---------------+-----+ | 1 | John Doe | 1990-01-01 | 27 | | 2 | David Taylor | 1989-06-06 | 28 | | 3 | Peter Drucker | 1985-03-02 | 32 | | 4 | Lily Minsu | 1992-05-05 | 25 | | 5 | Mary William | 1995-12-01 | 21 | +----+---------------+---------------+-----+ 5 rows in set
以上是mysql怎麼求時間差的詳細內容。更多資訊請關注PHP中文網其他相關文章!