MySQL中DateTime操作的结果是什么
我尝试了以下SQL查询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
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+我认为当这些时间戳被减除,并且给出一个不清楚的值时,这是一个错误,可能是由此留下的?简短的回答:没有什么有用的