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和TIMESTAMPADD函数的用法
在MySQL应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_ ...
- mysql中一些简单但是新手容易犯的错误
一.概述 本人近期使用mysql,由于是新手,常常碰到一些问题,因此,在这里做了一个错误备忘录. 二.错误罗列 1.MySQL 记录不存在时插入 记录存在则更新的实现方法 http://www.cnb ...
- mysql中删除重复记录,只保留一条
表结构如下: mysql> desc test1; +--------------+------------------+------+-----+---------+------------- ...
- mysql索引知识简单记录
简介 今天记录下索引基础知识 1.mysql单表最多支持多少个索引,索引总长度为多少? 索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. ...
- MYSQL中防止插入重复记录的解决方案(无重复值更新)
说明:一般我们使用MYSQL插入记录时,类似于这样的语句: insert into table_name(email,phone,user_id) values(‘test9@163.com’,’99 ...
- mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句
正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: [sql] view plain cop ...
- mysql中数据表记录的增删查改(1)
数据记录的增删改查 insert into `数据表名称` (`字段名称`, ...) values ('1', ...); delete from `数据表名称` where 子句; update ...
- Mysql中给有记录的表添加唯一索引
ALTER IGNORE TABLE neeqs ADD UNIQUE KEY `unique` (`seccode`, `enddate`, `f002v`);
- mysql中timestamp简单用法
该时间字段有比较特殊的地方,显示内容datetime字段一样.当取值为null或者不赋值时,显示当前系统时间,然后在其他地区读取的时候会根据当地的时间转换成当地的系统时间.
随机推荐
- 请问batch_normalization做了normalization后为什么要变回来?
请问batch_normalization做了normalization后为什么要变回来? 请问batch_normalization做了normalization后为什么要变回来? - 莫驚蟄的回答 ...
- Linux下的硬件驱动——USB设备(转载)
usb_bulk_msg函数 当对usb设备进行一次读或者写时,usb_bulk_msg 函数是非常有用的; 然而, 当你需要连续地对设备进行读/写时,建议你建立一个自己的urbs,同时将urbs 提 ...
- POJ:3020-Antenna Placement(二分图的最小路径覆盖)
原题传送:http://poj.org/problem?id=3020 Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Descri ...
- 水题:CF16C-Monitor
Monitor 题目描述 Reca company makes monitors, the most popular of their models is AB999 with the screen ...
- Leetcode 145. 二叉树的后序遍历
题目链接 https://leetcode-cn.com/problems/binary-tree-postorder-traversal/description/ 题目描述 给定一个二叉树,返回它的 ...
- Linux网络文件系统NFS详解
什么是文件系统,NFS文件系统又是什么? 简单的说,文件系统就是通过软件对磁盘上的数据进行组织和管理的一种机制,对其的一种封装或透视. 你女朋友拍了美美的暧昧照片,放一个文件夹里发送给了A服务器,当你 ...
- python基础学习笔记——网络编程(协议篇)
一 互联网的本质 咱们先不说互联网是如何通信的(发送数据,文件等),先用一个经典的例子,给大家说明什么是互联网通信. 现在追溯到八九十年代,当时电话刚刚兴起,还没有手机的概念,只是有线电话,那么此时你 ...
- python中json操作了解
什么是接口? 交换数据 http://openweathermap.org/current json简介 JSON 是存储和交换文本信息的语法.类似 XML JSON 语法是 JavaScript 语 ...
- selenium - 常用页面操作
# 2.常用页面操作 # 访问某一个页面url = 'http://www.baidu.com'driver.get(url) # 获取页面的标题title = driver.titleprint(t ...
- 常见shell脚本命令整理
1.cat /dev/null > test.txt txt的文件内容被清空. 2.ls | xargs rm 目录中大量文件的删除 3.查看文件夹下文件个数 ls | wc -w 查看有多少个 ...