您好,登錄后才能下訂單哦!
這篇文章主要介紹了mysql如何求時(shí)間差,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
mysql求時(shí)間差的方法:1、使用TIMEDIFF()函數(shù),語(yǔ)法“TIMEDIFF(dt1, dt2);”;2、使用IMESTAMPDIFF()函數(shù),語(yǔ)法“TIMESTAMPDIFF(unit,begin,end);”。
本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
mysql求時(shí)間差
timediff()函數(shù) - 計(jì)算兩個(gè)TIME或DATETIME值之間的差值。
timestampdiff()函數(shù) - 計(jì)算兩個(gè)DATE或DATETIME值之間的差值。
TIMEDIFF
返回兩個(gè)TIME
或DATETIME
值之間的差值。 請(qǐng)參閱TIMEDIFF
函數(shù)的以下語(yǔ)法。
TIMEDIFF(dt1, dt2);
TIMEDIFF
函數(shù)接受兩個(gè)必須為相同類型的參數(shù),即TIME
或DATETIME
。 TIMEDIFF
函數(shù)返回表示為時(shí)間值的dt1 - dt2
的結(jié)果。
因?yàn)?code>TIMEDIFF函數(shù)返回TIME
值,所以其結(jié)果被限制在從-838:59:59
到838:59:59
的TIME
值范圍內(nèi)。
MySQL TIMEDIFF函數(shù)示例
讓我們舉一個(gè)例子來計(jì)算兩個(gè)時(shí)間值之間的差異。
mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff; +----------+ | diff | +----------+ | 02:00:00 | +----------+ 1 row in set
在這個(gè)例子中,我們計(jì)算了12:00:00
和10:00:00
之間的差值為:02:00:00
。
以下示例計(jì)算兩個(gè)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
如果任一參數(shù)為NULL
,TIMEDIFF
函數(shù)將返回NULL
。
mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set, 1 warning (0.00 sec)
如果傳遞兩個(gè)不同類型的參數(shù),一個(gè)是DATETIME
,另一個(gè)是TIME
,TIMEDIFF
函數(shù)也返回NULL
。
mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff; +------+ | diff | +------+ | NULL | +------+ 1 row in set
下面說明了TIMESTAMPDIFF
函數(shù)的語(yǔ)法。
TIMESTAMPDIFF(unit,begin,end);
TIMESTAMPDIFF
函數(shù)返回begin-end
的結(jié)果,其中begin
和end
是DATE
或DATETIME
表達(dá)式。
TIMESTAMPDIFF
函數(shù)允許其參數(shù)具有混合類型,例如,begin
是DATE
值,end
可以是DATETIME
值。 如果使用DATE
值,則TIMESTAMPDIFF
函數(shù)將其視為時(shí)間部分為“00:00:00”
的DATETIME
值。
unit
參數(shù)是確定(end-begin
)的結(jié)果的單位,表示為整數(shù)。 以下是有效單位:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
MySQL TIMESTAMPDIFF函數(shù)示例
以下示例將以月份值的形式返回2018-01-01
和2018-06-01
的差值:
mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result; +--------+ | result | +--------+ | 5 | +--------+ 1 row in set
如果您希望看到差值,只需要將unit
參數(shù)從MONTH
更改為DAY
,如下所示:
mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ | 151 | +--------+ 1 row in set
以下語(yǔ)句返回兩個(gè)DATETIME
值(以分鐘為單位)的差異值:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
請(qǐng)注意,TIMESTAMPDIFF
僅考慮與unit
參數(shù)相關(guān)的時(shí)間部分。 請(qǐng)參閱以下示例:
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set
差值應(yīng)該是45分59秒。 但是,我們將unit
參數(shù)傳遞為MINUTE
,因此,函數(shù)按預(yù)期返回45分鐘。
如果使用SECOND
而不是MINUTE
,則TIMESTAMPDIFF
函數(shù)將考慮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函數(shù)計(jì)算年齡
首先,我們創(chuàng)建一個(gè)名為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
來計(jì)算persons
表中每個(gè)人的年齡:
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, '2018-01-01') age FROM persons;
執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
+----+---------------+---------------+-----+ | 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
在此語(yǔ)句中,我們計(jì)算到2018-01-01
日為止的年齡。如果要計(jì)算當(dāng)前年齡,可以通過NOW
函數(shù)替換字面值'2018-01-01'
,如下所示:
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) age FROM persons;
執(zhí)行上面查詢語(yǔ)句,得到以下結(jié)果 -
+----+---------------+---------------+-----+ | 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
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“mysql如何求時(shí)間差”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。