国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

mysql如何求時(shí)間差

2024-07-24 12:34:06
字體:
供稿:網(wǎng)友
  這篇文章主要介紹了mysql如何求時(shí)間差,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
  
  mysql求時(shí)間差的方法:1、使用TIMEDIFF()函數(shù),語法“TIMEDIFF(dt1, dt2);”;2、使用IMESTAMPDIFF()函數(shù),語法“TIMESTAMPDIFF(unit,begin,end);”。
 
  本教程操作環(huán)境:windows7系統(tǒng)、mysql8版本、Dell G3電腦。
 
  mysql求時(shí)間差
 
  timediff()函數(shù) - 計(jì)算兩個(gè)TIME或DATETIME值之間的差值。
  timestampdiff()函數(shù) - 計(jì)算兩個(gè)DATE或DATETIME值之間的差值。
  MySQL TIMEDIFF函數(shù)介紹
  TIMEDIFF返回兩個(gè)TIME或DATETIME值之間的差值。 請參閱TIMEDIFF函數(shù)的以下語法。
 
  TIMEDIFF(dt1, dt2);
  TIMEDIFF函數(shù)接受兩個(gè)必須為相同類型的參數(shù),即TIME或DATETIME。 TIMEDIFF函數(shù)返回表示為時(shí)間值的dt1 - dt2的結(jié)果。
 
  因?yàn)門IMEDIFF函數(shù)返回TIME值,所以其結(jié)果被限制在從-838:59:59到838:59:59的TIME值范圍內(nèi)。
 
  MySQL TIMEDIFF函數(shù)示例
 
  讓我們舉一個(gè)例子來計(jì)算兩個(gè)時(shí)間值之間的差異。
 
  mysql> SELECT TIMEDIFF('12:00:00','10:00:00') diff;
  +----------+
  | diff     |
  +----------+
  | 02:00:00 |
  +----------+
  1 row in set
  在這個(gè)例子中,我們計(jì)算了12:00:00和10:00:00之間的差值為:02:00:00。
 
  以下示例計(jì)算兩個(gè)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
  如果任一參數(shù)為NULL,TIMEDIFF函數(shù)將返回NULL。
 
  mysql> SELECT TIMEDIFF('2010-01-01',NULL) diff;
  +------+
  | diff |
  +------+
  | NULL |
  +------+
  1 row in set, 1 warning (0.00 sec)
  如果傳遞兩個(gè)不同類型的參數(shù),一個(gè)是DATETIME,另一個(gè)是TIME,TIMEDIFF函數(shù)也返回NULL。
 
  mysql> SELECT TIMEDIFF('2010-01-01 10:00:00','10:00:00') diff;
  +------+
  | diff |
  +------+
  | NULL |
  +------+
  1 row in set
  MySQL TIMESTAMPDIFF函數(shù)簡介
  下面說明了TIMESTAMPDIFF函數(shù)的語法。
 
  TIMESTAMPDIFF(unit,begin,end);
  TIMESTAMPDIFF函數(shù)返回begin-end的結(jié)果,其中begin和end是DATE或DATETIME表達(dá)式。
 
  TIMESTAMPDIFF函數(shù)允許其參數(shù)具有混合類型,例如,begin是DATE值,end可以是DATETIME值。 如果使用DATE值,則TIMESTAMPDIFF函數(shù)將其視為時(shí)間部分為“00:00:00”的DATETIME值。
 
  unit參數(shù)是確定(end-begin)的結(jié)果的單位,表示為整數(shù)。 以下是有效單位:
 
  MICROSECOND
  SECOND
  MINUTE
  HOUR
  DAY
  WEEK
  MONTH
  QUARTER
  YEAR
  MySQL TIMESTAMPDIFF函數(shù)示例
 
  以下示例將以月份值的形式返回2018-01-01和2018-06-01的差值:
 
  mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result;
  +--------+
  | result |
  +--------+
  |      5 |
  +--------+
  1 row in set
  如果您希望看到差值,只需要將unit參數(shù)從MONTH更改為DAY,如下所示:
 
  mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result;
  +--------+
  | result |
  +--------+
  |    151 |
  +--------+
  1 row in set
  以下語句返回兩個(gè)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參數(shù)相關(guān)的時(shí)間部分。 請參閱以下示例:
 
  mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:59') result;
  +--------+
  | result |
  +--------+
  |     45 |
  +--------+
  1 row in set
  差值應(yīng)該是45分59秒。 但是,我們將unit參數(shù)傳遞為MINUTE,因此,函數(shù)按預(yù)期返回45分鐘。
 
  如果使用SECOND而不是MINUTE,則TIMESTAMPDIFF函數(shù)將考慮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函數(shù)計(jì)算年齡
 
  首先,我們創(chuàng)建一個(gè)名為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來計(jì)算persons表中每個(gè)人的年齡:
 
  SELECT
      id,
      full_name,
      date_of_birth,
      TIMESTAMPDIFF(YEAR,
          date_of_birth,
          '2018-01-01') age
  FROM
      persons;
  執(zhí)行上面查詢語句,得到以下結(jié)果 -
 
  +----+---------------+---------------+-----+
  | 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
  在此語句中,我們計(jì)算到2018-01-01日為止的年齡。如果要計(jì)算當(dāng)前年齡,可以通過NOW函數(shù)替換字面值'2018-01-01',如下所示:
 
  SELECT
      id,
      full_name,
      date_of_birth,
      TIMESTAMPDIFF(YEAR,
          date_of_birth,
          NOW()) age
  FROM
      persons;
  執(zhí)行上面查詢語句,得到以下結(jié)果 -
 
  +----+---------------+---------------+-----+
  | 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
  感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“mysql如何求時(shí)間差”這篇文章對大家有幫助。

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苍梧县| 嘉鱼县| 会宁县| 伊川县| 即墨市| 马龙县| 梨树县| 无锡市| 奉贤区| 长垣县| 利津县| 吐鲁番市| 平凉市| 白水县| 曲阜市| 邹城市| 务川| 开原市| 新闻| 淮安市| 天等县| 台南市| 阿巴嘎旗| 瑞金市| 淅川县| 舞阳县| 大余县| 射洪县| 三台县| 蓬莱市| 昆山市| 镇坪县| 重庆市| 溧水县| 南丹县| 西和县| 钦州市| 新泰市| 平潭县| 辽阳县| 勃利县|