zoukankan      html  css  js  c++  java
  • 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时,会直接将相对应的DAYMINUTE相减

    • 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)
    学会勇敢
  • 相关阅读:
    Android ImageView设置图片原理(下)
    C++ 虚函数表 多重继承
    C++ 虚函数表 单继承
    私有继承
    内联函数和宏定义的区别
    #pragma pack(x) CPU对齐
    static 变量(静态变量)
    C++ 中const作用
    如何连接宏参数
    几种常见容器比较和分析 hashmap, map, vector, list ...hash table
  • 原文地址:https://www.cnblogs.com/Sir-Lin/p/8351341.html
Copyright © 2011-2022 走看看