您好,登錄后才能下訂單哦!
這篇文章主要介紹了mysql如何求時間差,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
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
)的結果的單位,表示為整數。 以下是有效單位:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
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
差值應該是45分59秒。 但是,我們將unit
參數傳遞為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
注:45分59秒= 45×60 + 59(秒)= 2759秒
使用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');
第三步,使用TIMESTAMPDIFF
來計算persons
表中每個人的年齡:
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
在此語句中,我們計算到2018-01-01
日為止的年齡。如果要計算當前年齡,可以通過NOW
函數替換字面值'2018-01-01'
,如下所示:
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如何求時間差”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。