MySQL-Methode zum Ermitteln der Zeitdifferenz: 1. Verwenden Sie die Funktion TIMEDIFF(), Syntax „TIMEDIFF(dt1, dt2);“ 2. Verwenden Sie die Funktion IMESTAMPDIFF(), Syntax „TIMESTAMPDIFF(unit,begin,end);“.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
MySQL findet Zeitunterschied
timediff()-Funktion – Berechnen Sie die Differenz zwischen zwei TIME- oder DATETIME-Werten.
timestampdiff()-Funktion – Berechnet die Differenz zwischen zwei DATE- oder DATETIME-Werten.
TIMEDIFF
gibt die Differenz zwischen zwei TIME
- oder DATETIME
-Werten zurück. Sehen Sie sich die folgende Syntax für die Funktion TIMEDIFF
an. 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
差值应该是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;
TIMEDIFF
akzeptiert zwei Parameter, die vom gleichen Typ sein müssen, nämlich TIME
oder DATETIME
. Die Funktion TIMEDIFF
gibt das Ergebnis von dt1 - dt2
ausgedrückt als Zeitwert zurück. Da die Funktion TIMEDIFF
den Wert TIME
zurückgibt, ist ihr Ergebnis auf den Bereich von -838:59:59
bis 838 beschränkt: 59 :59
innerhalb des Wertebereichs TIME
. MySQL TIMEDIFF-Funktionsbeispiel
🎜🎜🎜Lassen Sie uns ein Beispiel zur Berechnung der Differenz zwischen zwei Zeitwerten geben. 🎜+----+---------------+---------------+-----+ | 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
12:00:00
und 10:00:00
wie folgt berechnet: 02:00: 00
. 🎜🎜Das folgende Beispiel berechnet die Differenz zwischen zwei DATETIME
-Werten: 🎜rrreee🎜Wenn einer der Parameter NULL
ist, gibt die Funktion TIMEDIFF
NULL
. 🎜rrreee🎜Wenn zwei Parameter unterschiedlichen Typs übergeben werden, einer ist DATETIME
und der andere ist TIME
, gibt die Funktion TIMEDIFF
auch NULL
. 🎜rrreeeTIMESTAMPDIFF
wird unten erläutert. 🎜rrreee🎜Die Funktion TIMESTAMPDIFF
gibt das Ergebnis von begin-end
zurück, wobei begin
und end
sind DATE- oder <code>DATETIME
-Ausdruck. 🎜🎜Die Funktion TIMESTAMPDIFF
ermöglicht, dass ihre Parameter gemischte Typen haben, zum Beispiel ist begin
ein DATE
-Wert und end code> kann ein DATETIME
Wert sein. Wenn ein DATE
-Wert verwendet wird, behandelt die Funktion TIMESTAMPDIFF
ihn als DATETIME
mit dem Zeitteil "00:00:00".
code>Wert. 🎜🎜Der Parameter unit
ist die Einheit, mit der das Ergebnis von (end-begin
) bestimmt wird, ausgedrückt als Ganzzahl. Folgende Einheiten sind gültig: 🎜2018-01-01
und 2018-06-01
als Monatswert zurückgegeben: 🎜rrreee🎜Wenn Sie den Unterschied sehen möchten, klicken Sie einfach auf The Der Parameter unit
wird wie folgt von MONTH
in DAY
geändert: 🎜rrreee🎜Die folgende Anweisung gibt zwei DATETIME
-Werte Differenz zurück Wert (in Minuten): 🎜rrreee🎜 Bitte beachten Sie, dass TIMESTAMPDIFF
nur den Zeitanteil berücksichtigt, der mit dem Parameter unit
verknüpft ist. Siehe das Beispiel unten: 🎜rrreee🎜Der Unterschied sollte 45 Minuten und 59 Sekunden betragen. Allerdings haben wir den Parameter unit
als MINUTE
übergeben, sodass die Funktion wie erwartet 45 Minuten zurückgibt. 🎜🎜Wenn Sie SECOND
anstelle von MINUTE
verwenden, berücksichtigt die Funktion TIMESTAMPDIFF
den Teil SECOND
, wie in gezeigt das folgende Beispiel:🎜rrreee🎜🎜Hinweis: 45 Minuten und 59 Sekunden = 45×60 + 59 (Sekunden) = 2759 Sekunden🎜🎜🎜🎜Verwenden Sie die MySQL-Funktion TIMESTAMPDIFF, um das Alter zu berechnen🎜🎜🎜Zuerst em> erstellen wir zu Demonstrationszwecken eine Datei namens A new table for persons
. 🎜rrreee🎜Zweitens fügen Sie einige Zeilen in die Tabelle persons
ein: 🎜rrreee🎜🎜Im dritten Schritt🎜 verwenden Sie TIMESTAMPDIFF
, um zu berechnen Das Alter jeder Person in der Personentabelle
: 🎜rrreee🎜Führen Sie die obige Abfrageanweisung aus und erhalten Sie die folgenden Ergebnisse: 🎜rrreee🎜In dieser Anweisung berechnen wir das Alter bis zum 01.01.2018 Alter. Wenn Sie das aktuelle Alter berechnen möchten, können Sie den Literalwert <code>'2018-01-01'
durch die Funktion NOW
ersetzen, wie unten gezeigt: 🎜rrreee🎜Execute the obige Abfrageanweisung und erhalten Sie die folgenden Ergebnisse -🎜rrreee🎜【Verwandte Empfehlung: 🎜MySQL-Video-Tutorial🎜】🎜
Das obige ist der detaillierte Inhalt vonSo finden Sie den Zeitunterschied in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!