Maison > base de données > tutoriel mysql > le corps du texte

Comment trouver le décalage horaire dans MySQL

青灯夜游
Libérer: 2021-12-28 09:08:53
original
50664 Les gens l'ont consulté

Méthode MySQL pour trouver le décalage horaire : 1. Utilisez la fonction TIMEDIFF(), syntaxe "TIMEDIFF(dt1, dt2);" 2. Utilisez la fonction IMESTAMPDIFF(), syntaxe "TIMESTAMPDIFF(unit,begin,end);".

Comment trouver le décalage horaire dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

mysql trouve le décalage horaire

  • fonction timediff() - Calcule la différence entre deux valeurs TIME ou DATETIME.

  • fonction timestampdiff() - Calcule la différence entre deux valeurs DATE ou DATETIME.

Introduction à la fonction MySQL TIMEDIFF

TIMEDIFF renvoie la différence entre deux valeurs TIME ou DATETIME. Voir la syntaxe suivante pour la fonction TIMEDIFF. TIMEDIFF返回两个TIMEDATETIME值之间的差值。 请参阅TIMEDIFF函数的以下语法。

TIMEDIFF(dt1, dt2);
Copier après la connexion

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
Copier après la connexion

在这个例子中,我们计算了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
Copier après la connexion

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

mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)
Copier après la connexion

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

mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set
Copier après la connexion

MySQL TIMESTAMPDIFF函数简介

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

TIMESTAMPDIFF(unit,begin,end);
Copier après la connexion

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
Copier après la connexion

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

mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result;
+--------+
| result |
+--------+
|    151 |
+--------+
1 row in set
Copier après la connexion

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

mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result;
+--------+
| result |
+--------+
|     45 |
+--------+
1 row in set
Copier après la connexion

请注意,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
Copier après la connexion

差值应该是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
Copier après la connexion

注: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
);
Copier après la connexion

其次,向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');
Copier après la connexion

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

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        '2018-01-01') age
FROM
    persons;
Copier après la connexion

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

+----+---------------+---------------+-----+
| 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
Copier après la connexion

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

SELECT 
    id,
    full_name,
    date_of_birth,
    TIMESTAMPDIFF(YEAR,
        date_of_birth,
        NOW()) age
FROM
    persons;
Copier après la connexion
La fonction TIMEDIFF accepte deux paramètres qui doivent être du même type, à savoir TIME ou DATETIME. La fonction TIMEDIFF renvoie le résultat de dt1 - dt2 exprimé sous forme de valeur temporelle.

Étant donné que la fonction TIMEDIFF renvoie la valeur TIME, son résultat est limité de -838:59:59 à 838 : 59 :59 dans la plage de valeurs TIME.

Exemple de fonction MySQL TIMEDIFF

🎜🎜🎜Donnons un exemple pour calculer la différence entre deux valeurs de temps. 🎜
+----+---------------+---------------+-----+
| 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
Copier après la connexion
🎜Dans cet exemple, nous avons calculé la différence entre 12:00:00 et 10:00:00 comme : 02:00 : 00. 🎜🎜L'exemple suivant calcule la différence entre deux valeurs DATETIME : 🎜rrreee🎜Si l'un des paramètres est NULL, la fonction TIMEDIFF renverra NULL. 🎜rrreee🎜Si deux paramètres de types différents sont passés, l'un est DATETIME et l'autre est TIME, la fonction TIMEDIFF renverra également NULL . 🎜rrreee

Introduction à la fonction MySQL TIMESTAMPDIFF
🎜🎜La syntaxe de la fonction TIMESTAMPDIFF est expliquée ci-dessous. 🎜rrreee🎜La fonction TIMESTAMPDIFF renvoie le résultat de begin-end, où begin et end sont Expression DATE ou <code>DATETIME. 🎜🎜La fonction TIMESTAMPDIFF permet à ses paramètres d'avoir des types mixtes, par exemple, begin est une valeur DATE et end code> peut être une valeur DATETIME. Si une valeur DATE est utilisée, la fonction TIMESTAMPDIFF la traite comme un DATETIME avec la partie horaire "00:00:00" code>valeur. 🎜🎜Le paramètre unit est l'unité utilisée pour déterminer le résultat de (end-begin), exprimé sous forme d'entier. Les unités suivantes sont valides : 🎜
    🎜MICROSECONDE🎜🎜SECOND🎜🎜MINUTE🎜🎜HOUR🎜🎜DAY🎜🎜WEEK🎜🎜MONTH🎜🎜QUARTER🎜🎜YEAR🎜🎜🎜🎜 🎜Exemple de fonction MySQL TIMESTAMPDIFF🎜🎜🎜🎜Exemple ci-dessous La différence entre 2018-01-01 et 2018-06-01 sera renvoyée sous forme de valeur mensuelle : 🎜rrreee🎜Si vous voulez voir la différence, il suffit de Le paramètre unit est modifié de MONTH à DAY comme suit : 🎜rrreee🎜L'instruction suivante renvoie deux valeurs DATETIME Différence valeur (en minutes) : 🎜rrreee🎜 Veuillez noter que TIMESTAMPDIFF ne considère que la partie de temps associée au paramètre unit. Voir l'exemple ci-dessous : 🎜rrreee🎜La différence devrait être de 45 minutes et 59 secondes. Cependant, nous avons passé le paramètre unit sous la forme MINUTE, donc la fonction renvoie 45 minutes comme prévu. 🎜🎜Si vous utilisez SECOND au lieu de MINUTE, la fonction TIMESTAMPDIFF prendra en compte la partie SECOND, comme indiqué dans l'exemple suivant :🎜rrreee🎜🎜Remarque : 45 minutes et 59 secondes = 45×60 + 59 (secondes) = 2759 secondes🎜🎜🎜🎜Utilisez la fonction MySQL TIMESTAMPDIFF pour calculer l'âge🎜🎜🎜Tout d'abord em>, nous créons un fichier appelé Une nouvelle table pour les personnes, à des fins de démonstration. 🎜rrreee🎜Deuxièmement, insérez quelques lignes dans le tableau persons : 🎜rrreee🎜🎜Étape 🎜, utilisez TIMESTAMPDIFF pour calculer L'âge de chaque personne dans la table des personnes : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜rrreee🎜Dans cette instruction, nous calculons l'âge jusqu'au 01/01/2018 l'âge. Si vous souhaitez calculer l'âge actuel, vous pouvez remplacer la valeur littérale '2018-01-01' par la fonction MAINTENANT, comme indiqué ci-dessous : 🎜rrreee🎜Exécutez le ci-dessus et obtenez les résultats suivants -🎜rrreee🎜[Recommandations associées : 🎜Tutoriel vidéo mysql🎜]🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal