久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql如何求時間差

163次閱讀
沒有評論

共計 4064 個字符,預計需要花費 11 分鐘才能閱讀完成。

這篇文章主要介紹了 mysql 如何求時間差,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

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

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

mysql 求時間差

timediff()函數 – 計算兩個 TIME 或 DATETIME 值之間的差值。

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

MySQL TIMEDIFF 函數介紹

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

MySQL TIMESTAMPDIFF 函數簡介

下面說明了 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) 的結果的單位,表示為整數。以下是有效單位:

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
 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
 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

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“mysql 如何求時間差”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計4064字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 明星| 洪泽县| 射阳县| 信宜市| 稷山县| 东山县| 海盐县| 分宜县| 丰城市| 朔州市| 堆龙德庆县| 娄烦县| 禄丰县| 张家界市| 韶关市| 吐鲁番市| 万载县| 徐闻县| 井研县| 翁牛特旗| 乐安县| 额敏县| 柳河县| 芜湖县| 内黄县| 莱州市| 上虞市| 庆元县| 邹城市| 东阿县| 高邮市| 宜昌市| 乌拉特后旗| 新乡县| 阿克| 洪江市| 商城县| 大名县| 衡山县| 类乌齐县| 辰溪县|