mysql中TIMESTAMPDIFF案例详解

 更新时间:2021年08月13日 16:15:30   作者:baiyaoliang7445  
这篇文章主要介绍了mysql中TIMESTAMPDIFF案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

1.  Syntax

TIMESTAMPDIFF(unit,begin,end); 根据单位返回时间差,对于传入的begin和end不需要相同的数据结构,可以存在一个为Date一个DateTime

2. Unit

支持的单位有

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

3. Example

下面这个例子是对于TIMESTAMPDIFF最基本的用法,

  • 3.1 求 2017-01-01 - 2017-02-01 之间有几个月
SELECT TIMESTAMPDIFF(MONTH, '2017-01-01', '2017-02-01') as  result;

+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
  • 3.2 求 2017-01-01 - 2017-02-01 之间有几天
SELECT TIMESTAMPDIFF(DAY, '2017-01-01', '2017-02-01') as  result;

+--------+
| result |
+--------+
| 31 |
+--------+
1 row in set (0.00 sec)
  •  3.3 求 2017-01-01 08: 00:00 - 2017-01-01 08: 55:00 之间有几分钟
SELECT TIMESTAMPDIFF(MINUTE, '2017-01-01 08:00:00', '2017-01-01 08:55:00') result;

+--------+
| result |
+--------+
| 55 |
+--------+
1 row in set (0.00 sec)
  •  3.4 求 2017-01-01 08: 00:00 - 2017-01-01 08: 55:33 之间有几分钟
SELECT TIMESTAMPDIFF(MINUTE, '2017-01-01 08:00:00', '2017-01-01 08:55:33') result;

+--------+
| result |
+--------+
| 55 |
+--------+
1 row in set (0.00 sec)
  •  3.5 对于DAY, MINUTE进行计算DIFF时,会直接将相对应的DAY,MINUTE相减

  • 3.6 对于 SECOND 会怎样计算呢
SELECT TIMESTAMPDIFF(SECOND, '2017-01-01 08:00:00', '2017-01-01 08:55:33') result;

55 * 60 + 33 = 3333
+--------+
| result |
+--------+
|   3333 |
+--------+
1 row in set (0.00 sec)
  • 3.7 如何求数据库中两个date字段的diff
    • 3.7.1  建表
      CREATE TABLE demo (id INT AUTO_INCREMENT PRIMARY KEY, start_time DATE NOT NULL, end_time DATE NOT NULL);
      Query OK, 0 rows affected (0.10 sec)
    • 3.7.2  添加数据
      INSERT INTO demo(start_time, end_time)
      VALUES('1983-01-01', '1990-01-01'),
      ('1983-01-01', '1989-06-06'),
      ('1983-01-01', '1985-03-02'),
      ('1983-01-01', '1992-05-05'),
      ('1983-01-01 11:12:11', '1995-12-01');
    • 3.7.3 直接query数据
      select * from demo;
      +----+------------+------------+
      | id | start_time | end_time |
      +----+------------+------------+
      | 1 | 1983-01-01 | 1990-01-01 |
      | 2 | 1983-01-01 | 1989-06-06 |
      | 3 | 1983-01-01 | 1985-03-02 |
      | 4 | 1983-01-01 | 1992-05-05 |
      | 5 | 1983-01-01 | 1995-12-01 |
      +----+------------+------------+
      5 rows in set (0.00 sec)
    • 3.7.4 计算duration
      select *, TIMESTAMPDIFF(YEAR, start_time, end_time) as duration from demo;
      
      +----+------------+------------+----------+
      | id | start_time | end_time | duration |
      +----+------------+------------+----------+
      | 1 | 1983-01-01 | 1990-01-01 | 7 |
      | 2 | 1983-01-01 | 1989-06-06 | 6 |
      | 3 | 1983-01-01 | 1985-03-02 | 2 |
      | 4 | 1983-01-01 | 1992-05-05 | 9 |
      | 5 | 1983-01-01 | 1995-12-01 | 12 |
      +----+------------+------------+----------+
      5 rows in set (0.00 sec)
    • 3.7.5 其他应用
      select *, if(TIMESTAMPDIFF(YEAR, end_time, CURRENT_TIMESTAMP())< 26 ,'< 26','>= 26') as result from demo;
      
      +----+------------+------------+--------+
      | id | start_time | end_time | result |
      +----+------------+------------+--------+
      | 1 | 1983-01-01 | 1990-01-01 | >= 26 |
      | 2 | 1983-01-01 | 1989-06-06 | >= 26 |
      | 3 | 1983-01-01 | 1985-03-02 | >= 26 |
      | 4 | 1983-01-01 | 1992-05-05 | < 26 |
      | 5 | 1983-01-01 | 1995-12-01 | < 26 |
      +----+------------+------------+--------+
      5 rows in set (0.00 sec)

到此这篇关于mysql中TIMESTAMPDIFF案例详解的文章就介绍到这了,更多相关mysql中TIMESTAMPDIFF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL教程数据定义语言DDL示例详解

    MySQL教程数据定义语言DDL示例详解

    这篇文章主要为大家介绍了MySQL教程中什么是数据定义语言DDL的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • Linux中部署MySQL环境的四种方式图文详解

    Linux中部署MySQL环境的四种方式图文详解

    这篇文章主要介绍了Linux中部署MySQL环境的四种方式,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • MySQL中的ALTER EVENT语句的具体使用

    MySQL中的ALTER EVENT语句的具体使用

    EVENT 是一种特殊的数据库对象,它允许你在指定的时间间隔或特定的时间自动执行SQL语句或语句集,本文主要介绍了MySQL中的ALTER EVENT语句的具体使用,感兴趣的可以了解一下
    2024-07-07
  • 批量 kill mysql 中运行时间长的sql

    批量 kill mysql 中运行时间长的sql

    这篇文章主要介绍了批量 kill mysql 中运行时间长的sql,需要的朋友可以参考下
    2016-01-01
  • 常见数据库中SQL分页语法整理大全(附示例)

    常见数据库中SQL分页语法整理大全(附示例)

    数据库分页是数据库管理系统中非常常见的一种操作,主要用于在大量数据中进行高效的浏览,提高用户体验,这篇文章主要介绍了常见数据库中SQL分页语法整理的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • C#编写方法实例

    C#编写方法实例

    在下面的练习中,将创建一个应用程序,它包含的一个方法能够计算一名顾问的收费金额——假定该顾问每天收取固定的费用,将根据工作了多少天来收费。首先要开发应用程序的逻辑,然后利用“生成方法存根向导”来写出这个逻辑使用的方法。接着,我们将在一个控制台应用程序中运行方法,以获得对该程序的最终印象。最后,我们将使用Visual Studio 2005调试器来检查方法调用。
    2008-04-04
  • MySQL字符串索引更合理的创建规则讨论

    MySQL字符串索引更合理的创建规则讨论

    这篇文章主要给大家介绍了关于MySQL字符串索引更合理的创建规则,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • 读取mysql一个库下面的所有的表table

    读取mysql一个库下面的所有的表table

    本文给大家分享的是如何使用php实现读取mysql一个库下面的所有的表table的代码,有需要的小伙伴可以参考下
    2016-12-12
  • MySQL 配置主从复制实践分享

    MySQL 配置主从复制实践分享

    这篇文章主要介绍了MySQL 配置主从复制实践分享,通过检测通信展开详情,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • MySQL索引的5种应用

    MySQL索引的5种应用

    本文主要介绍了MySQL索引的5种应用,包含聚集索引,唯一索引,非唯一(普通)索引,全文索引,组合索引等,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03

最新评论