mysql怎麼求時間差

青灯夜游
發布: 2021-12-28 09:08:53
原創
50636 人瀏覽過

mysql求時間差的方法:1、使用TIMEDIFF()函數,語法「TIMEDIFF(dt1, dt2);」;2、使用IMESTAMPDIFF()函數,語法「TIMESTAMPDIFF(unit,begin,end); 」。

mysql怎麼求時間差

本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。

mysql求時間差

  • #timediff()函數 - 計算兩個TIME或DATETIME值之間的差異。

  • timestampdiff()函數 - 計算兩個DATE或DATETIME值之間的差異。

MySQL TIMEDIFF函數介紹

TIMEDIFF傳回兩個TIMEDATETIME##值之間的差值。請參閱TIMEDIFF

函數的以下語法。

TIMEDIFF(dt1, dt2);
登入後複製
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
登入後複製
在這個例子中,我們計算了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
登入後複製
如果任一參數為NULLTIMEDIFF函數將會傳回NULL。

mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set, 1 warning (0.00 sec)
登入後複製
如果傳遞兩個不同類型的參數,一個是DATETIME,另一個是TIMETIMEDIFF函數也回傳 NULL。

mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff;
+------+
| diff |
+------+
| NULL |
+------+
1 row in set
登入後複製

MySQL TIMESTAMPDIFF函數簡介

下面說明了TIMESTAMPDIFF

函數的語法。

TIMESTAMPDIFF(unit,begin,end);
登入後複製
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-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影片教學###】###

以上是mysql怎麼求時間差的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!