mysql - MySQL 中两个日期时间之间的减号运算符的行为是什么?

标签 mysql datetime

日期时间之间的差异是它们之间的秒数。这似乎只有在日期时间出现在同一小时内时才有效。

这是为什么?

mysql> update events set created_at = "2011-04-13 15:59:59", fulfilled_at ="2011-04-13 16:00:00" where id = 1;
mysql> select fulfilled_at - created_at, timediff(fulfilled_at, created_at) from events where id = 1;
+---------------------------+------------------------------------+
| fulfilled_at - created_at | timediff(fulfilled_at, created_at) |
+---------------------------+------------------------------------+
|               4041.000000 | 00:00:01                           |
+---------------------------+------------------------------------+

我知道我应该使用 timediff,但我很好奇为什么我会看到这个或者它是否记录在某处。

最佳答案

MySQL 只是尽可能地将字符串转换为数字,以便它可以对它们进行数学运算。在这种情况下,它只是去除所有非数字冒号、破折号和空格。

试试这个:

SELECT (20110413155959 - 20110413160000) AS dates;

你的日期,没有所有阻止它们成为数字的东西 - 结果是 -4041

关于mysql - MySQL 中两个日期时间之间的减号运算符的行为是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6255405/

相关文章:

php - 从mysql php中的输入框搜索值

java - SQL语句不加单引号( ' ')

Java:如何获得下一次匹配模式

javascript函数将当前时间(从纪元)四舍五入到最近的分钟

Excel函数确定一个月中的最后一个星期五

python - 从 TimeDelta 到 Pandas 中的 float 天数

php - 如何创建具有用户角色的 JWT token (Spatie JWT 网络 token )

mysql - 配置属性是未知属性

mysql - SQL查找和替换错误

javascript - MomentJS 倒计时与 diff