如何计算两个时间戳在几天内的差异?我应该使用datetime列吗?


I switched my column to datetime. Simple subtraction doesn't seem to give me a result in days.
mysql> SELECT NOW(), last_confirmation_attempt, NOW() - last_confirmation_attempt AS diff  FROM DateClubs HAVING diff IS NOT NULL ;
+---------------------+---------------------------+-----------------+
| NOW()               | last_confirmation_attempt | diff            |
+---------------------+---------------------------+-----------------+
| 2010-03-30 10:52:31 | 2010-03-16 10:41:47       | 14001084.000000 |
+---------------------+---------------------------+-----------------+
1 row in set (0.00 sec)

我不认为diff是秒,因为当我把diff除以一天中的秒数(86400)时,我不会得到一个感性的答案:

mysql> SELECT NOW(), last_confirmation_attempt, ( NOW() - last_confirmation_attempt) / 86400 AS diff  FROM DateClubs HAVING diff IS NOT NULL ;
+---------------------+---------------------------+----------------+
| NOW()               | last_confirmation_attempt | diff           |
+---------------------+---------------------------+----------------+
| 2010-03-30 10:58:58 | 2010-03-16 10:41:47       | 162.0568402778 |
+---------------------+---------------------------+----------------+
1 row in set (0.00 sec)

推荐答案

如果你愿意忽略列中的时间部分,DATEDIFF()将给你以天为单位的差异.

SELECT DATEDIFF('2010-10-08 18:23:13', '2010-09-21 21:40:36') AS days;
+------+
| days |
+------+
|   17 |
+------+

Mysql相关问答推荐

如何在循环查询中删除默认架构?

我需要为用户提供MySQL视图和存储的 routine ,但不是基础表

根据当前表列的值,从SQL中的另一个表中获取数据

当日期附加到MySQL后,如何按日期说明排序?

WordPress的sql命令从帖子中删除随机文本

根据时间戳分组删除

为什么我的 SQL 查询不更新 Node.js 和 MySQL 中用户以外的用户属性?

为什么Mysql会根据查询参数改变查询执行计划?

如何使用 express.js 和 react.js 删除连接表中的元素和关联元素

在 Codeigniter MySQL 中从另一个数据库获取数据

连接两个表.使用连接列作为分组依据,然后根据时间戳 Select 最新行

此更新查询是否有任何可能的重写选项?

在 SQL 中的 case 语句之后将新列转换为 INT

使用数据表的直方图(SQL 查询)

Mysql 相等性反对 false 或 true

没有 JDBC 类型的方言映射:1111

从mysql中的大表中快速 Select 随机行

如何在 MySQL 的日期时间字段中存储 NULL 值?

BIGINT mysql 性能与 INT 相比

'LIKE ('%this%' OR '%that%') and something=else' 不起作用