Heim > Datenbank > MySQL-Tutorial > Hauptteil

So finden Sie den Zeitunterschied in MySQL

青灯夜游
Freigeben: 2021-12-28 09:08:53
Original
50664 Leute haben es durchsucht

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);“.

So finden Sie den Zeitunterschied in MySQL

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.

Einführung in die MySQL TIMEDIFF-Funktion

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返回两个TIMEDATETIME值之间的差值。 请参阅TIMEDIFF函数的以下语法。

TIMEDIFF(dt1, dt2);
Nach dem Login kopieren

TIMEDIFF函数接受两个必须为相同类型的参数,即TIMEDATETIMETIMEDIFF函数返回表示为时间值的dt1 - dt2的结果。

因为TIMEDIFF函数返回TIME值,所以其结果被限制在从-838:59:59838:59:59TIME值范围内。

MySQL TIMEDIFF函数示例

让我们举一个例子来计算两个时间值之间的差异。

mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff;
+----------+
| diff     |
+----------+
| 02:00:00 |
+----------+
1 row in set
Nach dem Login kopieren

在这个例子中,我们计算了12:00:0010: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
Nach dem Login kopieren

如果任一参数为NULLTIMEDIFF函数将返回NULL

mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)
Nach dem Login kopieren

如果传递两个不同类型的参数,一个是DATETIME,另一个是TIMETIMEDIFF函数也返回NULL

mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set
Nach dem Login kopieren

MySQL TIMESTAMPDIFF函数简介

下面说明了TIMESTAMPDIFF函数的语法。

TIMESTAMPDIFF(unit,begin,end);
Nach dem Login kopieren

TIMESTAMPDIFF函数返回begin-end的结果,其中beginendDATEDATETIME表达式。

TIMESTAMPDIFF函数允许其参数具有混合类型,例如,beginDATE值,end可以是DATETIME值。 如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”DATETIME值。

unit参数是确定(end-begin)的结果的单位,表示为整数。 以下是有效单位:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

MySQL TIMESTAMPDIFF函数示例

以下示例将以月份值的形式返回2018-01-012018-06-01的差值:

mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result;
+--------+
| result |
+--------+
|      5 |
+--------+
1 row in set
Nach dem Login kopieren

如果您希望看到差值,只需要将unit参数从MONTH更改为DAY,如下所示:

mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result;
+--------+
| result |
+--------+
|    151 |
+--------+
1 row in set
Nach dem Login kopieren

以下语句返回两个DATETIME值(以分钟为单位)的差异值:

mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result;
+--------+
| result |
+--------+
|     45 |
+--------+
1 row in set
Nach dem Login kopieren

请注意,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
Nach dem Login kopieren

差值应该是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
Nach dem Login kopieren

注: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
);
Nach dem Login kopieren

其次,向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');
Nach dem Login kopieren

第三步,使用TIMESTAMPDIFF来计算persons表中每个人的年龄:

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        '2018-01-01') age
FROM
    persons;
Nach dem Login kopieren

执行上面查询语句,得到以下结果 -

+----+---------------+---------------+-----+
| 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
Nach dem Login kopieren

在此语句中,我们计算到2018-01-01日为止的年龄。如果要计算当前年龄,可以通过NOW函数替换字面值'2018-01-01'

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        NOW()) age
FROM
    persons;
Nach dem Login kopieren
Die Funktion 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
Nach dem Login kopieren
🎜In diesem Beispiel haben wir die Differenz zwischen 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 . 🎜rrreee

Einführung in die MySQL-Funktion TIMESTAMPDIFF
🎜🎜Die Syntax der Funktion TIMESTAMPDIFF 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 DATETIMEWert 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: 🎜
    🎜MICROSECOND🎜🎜SECOND🎜🎜MINUTE🎜🎜HOUR🎜🎜DAY🎜🎜WEEK🎜🎜MONTH🎜🎜QUARTER🎜🎜YEAR🎜🎜🎜🎜 🎜MySQL TIMESTAMPDIFF-Funktionsbeispiel🎜🎜🎜🎜Beispiel Unten wird der Unterschied zwischen 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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage