mysql时间相减的问题(bug)

Mysql 两个日期相减得到任意指定时间单位差值数据 TIMESTAMPDIFF() 影视类视频2001被用户101、102、103看过,播放进度分别为:30秒(100%)、21秒(70%)、30秒(100%),平均播放进度为90.00%(保留两位小数);美食类视频2002被用户102、103看过,播放进度分别为:30秒(50%)、60秒(100%),平均播放进度为75.00%(保留两位小数);Mysql 中两个日期直接相减,若在同一天则得到的是秒,否则相减得到的并不是秒,一定要注意。unit参数是确定(end-begin)的结果的单位,表示为整数。)的结果的单位,表示为整数。 阅读详情

mysql时间相减的问题(bug)

    今天看到宁青同学的一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。
先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确:

mysql> select t1,t2,t2-t1 from mytest;
+---------------------+---------------------+-------+
| t1                  | t2                  | t2-t1 |
+---------------------+---------------------+-------+
| 2013-04-21 16:59:33 | 2013-04-21 16:59:43 |    10 |
| 2013-04-21 16:59:33 | 2013-04-21 17:00:33 |  4100 |
| 2013-04-21 16:59:33 | 2013-04-21 17:59:35 | 10002 |
+---------------------+---------------------+-------+
3 rows in set


全部测试脚本如下:

--创建表
mysql> CREATE TABLE mytest (
  t1 datetime,
  t2 datetime
);
Query OK, 0 rows affected
--插入测试记录
mysql> insert into mytest(t1,t2) values('2013-04-21 16:59:33','2013-04-21 16:59:43');
Query OK, 1 row affected

mysql> insert into mytest(t1,t2) values('2013-04-21 16:59:33','2013-04-21 17:00:33');
Query OK, 1 row affected

mysql> insert into mytest(t1,t2) values('2013-04-21 16:59:33','2013-04-21 17:59:35');
Query OK, 1 row affected
--验证结果
mysql> select t1,t2,t2-t1 from mytest;
+---------------------+---------------------+-------+
| t1                  | t2                  | t2-t1 |
+---------------------+---------------------+-------+
| 2013-04-21 16:59:33 | 2013-04-21 16:59:43 |    10 |
| 2013-04-21 16:59:33 | 2013-04-21 17:00:33 |  4100 |
| 2013-04-21 16:59:33 | 2013-04-21 17:59:35 | 10002 |
+---------------------+---------------------+-------+
3 rows in set


实际是mysql的时间相减是做了一个隐式转换操作,将时间转换为整数,但并不是用unix_timestamp转换,而是直接把年月日时分秒拼起来,如2013-04-21 16:59:33 直接转换为20130421165933,由于时间不是十进制,所以最后得到的结果没有意义,这也是导致上面出现坑爹的结果。

mysql> select t1,
       t2,
       convert(t1, UNSIGNED INTEGER) ct1,
       convert(t2, UNSIGNED INTEGER) ct2,
       t2-t1,
       convert(t2, UNSIGNED INTEGER) -convert(t1, UNSIGNED INTEGER) diff0
  from mytest; 
+-------------------+-------------------+--------------+--------------+-----+-----+
|t1                 |t2                 |ct1           |ct2           |t2-t1|diff0|
+-------------------+-------------------+--------------+--------------+-----+-----+
|2013-04-21 16:59:33|2013-04-21 16:59:43|20130421165933|20130421165943|   10|   10|
|2013-04-21 16:59:33|2013-04-21 17:00:33|20130421165933|20130421170033| 4100| 4100|
|2013-04-21 16:59:33|2013-04-21 17:59:35|20130421165933|20130421175935|10002|10002|
+-------------------+-------------------+--------------+--------------+-----+-----+
3 rows in set


要得到正确的时间相减秒值,有以下3种方法:
1、time_to_sec(timediff(t2, t1)),
2、timestampdiff(second, t1, t2),
3、unix_timestamp(t2) -unix_timestamp(t1)

--测试脚本
mysql> select t1,
       t2,
       t2-t1,
       time_to_sec(timediff(t2, t1)) diff1,
       timestampdiff(second, t1, t2) diff2,
       unix_timestamp(t2) -unix_timestamp(t1) diff3
  from mytest;
+---------------------+---------------------+-------+-------+-------+-------+
| t1                  | t2                  | t2-t1 | diff1 | diff2 | diff3 |
+---------------------+---------------------+-------+-------+-------+-------+
| 2013-04-21 16:59:33 | 2013-04-21 16:59:43 |    10 |    10 |    10 |    10 |
| 2013-04-21 16:59:33 | 2013-04-21 17:00:33 |  4100 |    60 |    60 |    60 |
| 2013-04-21 16:59:33 | 2013-04-21 17:59:35 | 10002 |  3602 |  3602 |  3602 |
+---------------------+---------------------+-------+-------+-------+-------+
3 rows in set


这个问题2003年就有人在mysql4.0的版本时反馈,但mysql官方并不认为是bug,因为他们认为mysql并不支持时间直接相减操作,应该用专用函数处理,所以一直没有修正。但我认为这个很容易导致使用错误,要么就直接报错,要么显示正确的结果。

我的新浪微博 http://weibo.com/yzsind

mysql日期函数时间函数及加减运算 MySQL日期数据类型、MySQL时间类型使用总结,适用于 MySQL 5.X 及以上版本 立即下载

相关推荐

手把手教你用VM实现欧姆龙PLC数据采集(含Fins协议配置详解)

本文详细介绍了如何使用VM(VisionMaster)实现与欧姆龙PLC的数据采集,重点解析了Fins协议(包括Fins TCP/UDP)的配置步骤。从网络环境搭建、PLC的IP地址设置,到VM端Fins通讯通道的详细配置与数据点映射,提供了完整的实战指南。文章还涵盖了数据收发解析、常见问题排查清单,帮助工程师快速完成视觉系统与PLC的稳定集成。

weixin_29171087的博客 189

Mysql 日期和时间加减及日期计算相差年、月、周、日数整理

Mysql 日期和时间加减及日期计算相差年、月、周、日数整理 1、日期和时间加减 select now()-- 获取当前具体的日期和时间 2019-11-13 16:38:20 select curdate()-- 获取当前日期 2019-11-13 select curtime()-- 获取当前时间 6:38:20 1.1、MySQL加减某个时间间隔 设置当前...

helloxiaozhe的博客 9万+

Jetson AGX Orin 部署 JetPack:从依赖缺失到系统升级的完整排障指南

本文详细介绍了在Jetson AGX Orin开发板上部署JetPack SDK的完整排障指南,包括解决依赖缺失、系统升级和常见错误处理。通过确认硬件版本、配置正确的软件源、执行系统升级和安装核心组件等步骤,帮助开发者顺利完成JetPack的安装与配置,确保AI开发环境的稳定运行。

weixin_29172963的博客 159

MySQL 日期相减得到秒、分、天

MySQL 日期相减得到秒、分、天

南风知我意 5068

第二十届全国大学生智能汽车竞赛极速光电组:MicroPython与恩智浦RT1021的硬件编程实战指南

本文为参加第二十届全国大学生智能汽车竞赛极速光电组的同学提供了一份详尽的MicroPython与恩智浦RT1021硬件编程实战指南。文章深入剖析了选择MicroPython与RT1021这对组合的优势,详细讲解了从开发环境搭建、基础硬件控制(如GPIO、PWM、编码器、CCD)到系统集成(平衡控制、循迹算法)与多任务调试的全过程,旨在帮助参赛者降低嵌入式开发门槛,高效备赛。

wdx0123456的博客 843

Python爬虫实战:5分钟搞定慢慢买历史价格查询(附完整代码)

本文提供了一份Python爬虫实战指南,教你如何快速编写脚本自动查询慢慢买网站的商品历史价格。文章详细拆解了环境准备、接口分析、核心代码实现及常见问题应对,并附有完整代码,帮助读者将爬虫技术应用于日常比价,实现高效购物决策。

weixin_29053577的博客 1009

MySQL计算时间差函数

MySQL计算时间差函数 文章转载:https://www.cnblogs.com/XingLifeng/p/10348988.html TIMESTAMPDIFF(时间单位,参数1,参数2) 可以设置参数,可以精确到天(DAY),小时(HOUR),分钟(MINUTE),秒(SECOND),毫秒(FRAC_SECOND(低版本不支持,可以用秒,再乘1000)),计算机制为参数2-参数1,最后结果为数字,单位为第一个参数设置的值 (week 周,month 月,quarter 季度,year 年 )这几个单位

ltkaixin的博客 452

Proteus+汇编+8086电子时钟实战:从框架搭建到中断驱动的核心实现

本文详细介绍了使用Proteus仿真软件和8086汇编语言实现电子时钟的完整过程。从程序框架搭建、内存分段模型理解,到核心的8259中断控制器配置与编程,再到中断服务程序编写和数码管动态扫描显示驱动,系统阐述了底层软硬件协同开发的核心原理与实战步骤。该项目是深入理解计算机中断机制和汇编语言编程的绝佳实践。

weixin_29189381的博客 413

关于Mysql时间相减问题的bug

今天在写程序时,当想挑选出(当前时间-最后通信时间超过2分钟)的服务器时,发现一个问提,减出来的结果不是我所预期的那样。然后,通过测试,发现,原来mysql会有一个隐形的装换,将时间戳转换成整形类型,再进行相减,而不是以unix_timestamp类型进行加减。特地做个记录,防止以后再发生类似事件。 例如,我创建一个表,time-test  创建两列,time1,time2.以timestamp

一骑红尘妃子笑 697

ECU-TEST 快速入门

ECU-TEST 是由位于德国德累斯顿的TraceTronic公司开发的一款用于嵌入式系统测试验证软件工具。自从2003年首次发布ECU-TEST ,该软件成为了汽车ECU开发的标准工具 ,同时也逐步成为了重型机械和工业自动化开发的标准工具 。该软件是起源自于一个控制单元的系统化测试的项目研究,从而为从德累斯顿工业大学脱离出来的TraceTronic公司奠定了基础。ECU-TEST旨在完成测试案例的规范化、评估、求解和归档。得益于该软件包含大量的自动化测试方法使得测试案例的所有必要功能如创建、求解和评估

wangying202的博客 1万+

使用强化学习快速让AI学会玩贪食蛇游戏(轻量级二十分钟训练+代码)

如何让AI玩会贪食蛇,甚至比你厉害概述构建问题(强化学习求解的一般步骤)环境动作定义状态定义奖励设计训练奖励值收敛图效果代码 概述 所用技术:强化学习(Deep Reinforcement Learning),属于一种无监督学习,利用奖励rewardrewardreward教会智能体AgentAgentAgent在合适的场景做合适的决策。 采用算法:试过两种算法D3QN和离散版本的PPO算法,最终采用离散版本PPO算法+GAE(PPO是我用过的性能最好的算法之一) 编程语言与深度学习框架:Python3.

ZYunfei的博客 2万+

mysql相减不能为0报错_错误测试mysql时间相减的问题(bug)

在写这篇文章之前,xxx已经写过了几篇关于改错误测试主题的文章,想要了解的朋友可以去翻一下之前的文章mysql时光相减的问题(bug)明天看到宁青同窗的一条微博,提到mysql日期相减的错误结果,之前没有怎么意注,于是测试了一下,发明实确很坑爹,很易容踩雷,于是理整客博提示一下大家。先看一下错误的景象如下,第1条确正,第2,3条的t2-t1不确正:mysql> select t1,t2,t2...

weixin_39605345的博客 275

深度学习在传感器数据分析中的创新应用

传感器是物理世界与数字世界的“接口”,其生成的高维、时序、多源数据蕴含着设备状态、环境变化、用户行为等关键信息。传统传感器数据分析依赖手工特征工程与简单机器学习模型,难以应对复杂场景下的非线性、长程依赖与实时性需求。深度学习通过自动特征提取非线性建模与端到端学习,成为传感器数据处理的革命性工具。本文从概念基础理论框架架构设计实现机制到实际应用,系统拆解深度学习与传感器数据的融合逻辑,结合工业预测维护医疗健康监测智能交通等场景,揭示其技术边界与未来演化方向。

大数据洞察的博客 568

mysql相减不能为0报错_mysql时间相减的问题(bug)

mysql时间相减的问题(bug) 今天看到宁青同学的一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。 先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确: mysql selmysql时间相减的问题(bug)今天看到宁青同学的一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一...

weixin_32019577的博客 576

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

错误测试mysql时间相减的问题(bug)

在写这篇文章之前,xxx已经写过了几篇关于改错误测试主题的文章,想要了解的朋友可以去翻一下之前的文章      mysql时光相减的问题(bug)     明天看到宁青同窗的一条微博,提到mysql日期相减的错误结果,之前没有怎么意注,于是测试了一下,发明实确很坑爹,很易容踩雷,于是理整客博提示一下大家。先看一下错误的景象如下,第1条确正,第2,3条的t2-t1不确正: mysql>...

weixin_33711641的博客 187

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql时间相减的问题_mysql时间相减的问题

今天看到一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。 先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确: [sql] mysql select t1,t2,t2-t1 from mytest; +今天看到一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹...

weixin_42131601的博客 5446

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

mysql timediff 时间相减_mysql时间相减的问题

mysql时间相减的问题(bug)今天看到宁青同学的一条微博,提到MySQL日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确:mysql>selectt1,t2,t2-t1frommytest;+---------------------+-----------...

weixin_42329733的博客 1158

mysql时间相减-时间运算-转换毫秒值的问题

mysql时间运算一.时间相减发现与结果差距很大二.原因三.正确的运算 一.时间相减发现与结果差距很大 mysql> select t1,t2,t2-t1 from mytest; +---------------------+---------------------+-------+ | t1 | t2 | t2-t1 | +---------------------+---------------------+-------+

weixin_44903702的博客 3011

mysql时间相减的问题

先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确:   [sql]  mysql> select t1,t2,t2-t1 from mytest;   +---------------------+---------------------+-------+   | t1                  | t2                  | t2-t1 |  

1193

mysql 两个dateTime类型相减问题

mysql时间相减的问题(bug)转自:https://blog.youkuaiyun.com/yzsind/article/details/8831429    今天看到宁青同学的一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确:[sql] view plain...

white_ice的博客 9016

mysql datetime 类型字段相减

mysql时间相减的问题(bug)     今天看到宁青同学的一条微博,提到MySQL日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。 先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确: [sql] view plain copy mysql> select t1,t2,t2

xiaoyaotan_111的博客 3287

mysql datetime 类型字段相减(采到坑了,mark)

mysql datetime 类型字段相减 ...

github_38838414的博客 1722

mysql 时间运算_mysql 中时间运算问题 | 学步园

mysql时间相减的问题(bug)今天看到宁青同学的一条微博,提到mysql日期相减的错误结果,以前没有怎么注意,于是测试了一下,发现确实很坑爹,很容易踩雷,于是整理博客提醒一下大家。先看一下错误的现象如下,第1条正确,第2,3条的t2-t1不正确:mysql> select t1,t2,t2-t1 from mytest;+---------------------+-----------...

weixin_36171481的博客 236
上一篇: SQLServer索引的四个高级特性
下一篇: ORACLE表生成MYSQL建表DDL
yzsind
博客等级 码龄25年 1925粉丝 328原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值