Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中DateTime操作的结果是什么_Mysql_Sql - Fatal编程技术网

MySQL中DateTime操作的结果是什么

MySQL中DateTime操作的结果是什么,mysql,sql,Mysql,Sql,我尝试了以下SQL查询 select start_time, end_time, end_time-start_time from orders 这将打印以下输出 start_time |end_time |end_time-start_time ... 2019-11-29 15:55:54 | 2019-12-01 15:59:00 | 72000346 ... 我不知道结果意味着什么。 我知道我们可以使用TIMESTAMPDIFF来计算两个da

我尝试了以下SQL查询

select start_time, end_time, end_time-start_time from orders
这将打印以下输出

start_time          |end_time             |end_time-start_time
...
2019-11-29 15:55:54 | 2019-12-01 15:59:00 | 72000346
...
我不知道结果意味着什么。 我知道我们可以使用TIMESTAMPDIFF来计算两个datetime之间的差异。 有人知道结果意味着什么吗

select 
  start_time,
  end_time, 
  '0000000000000000000'+end_time   as exp1,
  '0000000000000000000'-start_time as exp2,
  '0000000000000000000'+end_time - '0000000000000000000'-start_time      as exp3
from orders;
输出:

+---------------------+---------------------+----------------+-----------------+----------+
| start_time          | end_time            | exp1           | exp2            | exp3     |
+---------------------+---------------------+----------------+-----------------+----------+
| 2019-11-29 15:55:54 | 2019-12-01 15:59:00 | 20191201155900 | -20191129155554 | 72000346 |
+---------------------+---------------------+----------------+-----------------+----------+


MySQL有一种令人不安的倾向,即将日期/时间值视为数字或字符串,而不是日期/时间。通常,这并不重要,因为值很容易转换为日期/时间

但是,对于您问题中的值,表示为:

 2019-12-01 15:59:00 --> 20191201155900
 2019-11-29 15:55:54 --> 20191129155554 
您得到的结果是
20191201155900-20191129155554


之所以会出现这种情况,是因为
-
是数字运算符,而数字具有更高的首选项。
+
也可能发生这种情况,但可以通过在表达式中添加
间隔来修复这种情况。

我假设在5.5之前版本的MySQL DB上,使用
FRAC_SECOND
作为
TIMESTAMPDIFF
函数的单位来运行此查询。DB ver上没有用于
TIMESTAMPDIFF
的此类单元。5.5+我认为当这些时间戳被减除,并且给出一个不清楚的值时,这是一个错误,可能是由此留下的?简短的回答:没有什么有用的