mysql - MariaDb timediff 函数计算错误的小时数

标签 mysql mariadb

晚上 8 点到早上 6 点之间的时差应该是 10 个小时,但实际上是 14 个小时

SELECT HOUR(TIMEDIFF(TIME('2018-06-01 20:00:00'),TIME('2018-06-02 06:00:00'))) AS NoofHours

最佳答案

您应该更正数据类型:

SELECT HOUR(TIMEDIFF(TIMESTAMP('2018-06-01 20:00:00'),
                     TIMESTAMP('2018-06-02 06:00:00'))) AS NoofHours
                     -- TIME != TIMESTAMP

<强> DBFiddle Demo

TIME 跳过日期部分。

SELECT TIME('2018-06-01 20:00:00'), TIME ('2018-06-02 06:00:00')
-- 20:00:00                         06:00:00
<小时/>

使用TIMESTAMPDIFF函数:

SELECT TIMESTAMPDIFF(HOUR,
                     TIMESTAMP('2018-06-01 20:00:00'),
                     TIMESTAMP('2018-06-02 06:00:00')) AS NoofHours

关于mysql - MariaDb timediff 函数计算错误的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834931/

相关文章:

mysql - 如何获取 MYSQL 数据库中表和 View 的 from 子句中使用的所有表和 View 的列表?

mysql - 了解 Spring 中的事务和数据库级别的事务吗?

mysql - 用于在将数据从一个表传输到另一个表后更改数据的存储过程?

mysql - 如何在Solr单词中搜索包含空格的 "Apache Lucene"?

PHP - 无法从 HTML 表单提交访问 POST 值

java - Spring MVC中如何将bean中的数据插入数据库?

mysql - 如何计算数据库中的重复项并返回它们?

node.js - 在一个巨大的数组中执行 sequelize findall

mysql - SQL 在一个查询中生成 2 种不同的日期类型

mysql - 未使用空间索引