use*_*841 48 mysql datetime timestamp
如何在几天内获得两个时间戳之间的差异?我应该使用datetime列吗?
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)
Run Code Online (Sandbox Code Playgroud)
我不认为diff
是在几秒钟内,因为当我diff
在一天中除以秒数(86,400)时,我得不到一个明智的答案:
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)
Run Code Online (Sandbox Code Playgroud)
小智 104
如果您乐意忽略列中的时间部分,DATEDIFF()将为您提供几天内您所寻找的差异.
SELECT DATEDIFF('2010-10-08 18:23:13', '2010-09-21 21:40:36') AS days;
+------+
| days |
+------+
| 17 |
+------+
Run Code Online (Sandbox Code Playgroud)
小智 12
我知道已经很老了,但我只是为了它而说 - 我正在寻找同样的问题而且到了这里,但我需要天数的差异.
我使用SELECT (UNIX_TIMESTAMP(DATE1) - UNIX_TIMESTAMP(DATE2))/60/60/24
Unix_timestamp返回以秒为单位的差异,然后我只分为分钟(秒/ 60),小时(分钟/ 60),天(小时/ 24).
如果你想以完整的TIMESTAMP格式返回而不是尝试: -
SELECT TIMEDIFF(`call_end_time`, `call_start_time`) as diff from tablename;
Run Code Online (Sandbox Code Playgroud)
回来就像
diff
- - -
00:05:15
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE t (d1 timestamp, d2 timestamp);
INSERT INTO t VALUES ('2010-03-11 12:00:00', '2010-03-30 05:00:00');
INSERT INTO t VALUES ('2010-03-11 12:00:00', '2010-03-30 13:00:00');
INSERT INTO t VALUES ('2010-03-11 00:00:00', '2010-03-30 13:00:00');
INSERT INTO t VALUES ('2010-03-10 12:00:00', '2010-03-30 13:00:00');
INSERT INTO t VALUES ('2010-03-10 12:00:00', '2010-04-01 13:00:00');
SELECT d2, d1, DATEDIFF(d2, d1) AS diff FROM t;
+---------------------+---------------------+------+
| d2 | d1 | diff |
+---------------------+---------------------+------+
| 2010-03-30 05:00:00 | 2010-03-11 12:00:00 | 19 |
| 2010-03-30 13:00:00 | 2010-03-11 12:00:00 | 19 |
| 2010-03-30 13:00:00 | 2010-03-11 00:00:00 | 19 |
| 2010-03-30 13:00:00 | 2010-03-10 12:00:00 | 20 |
| 2010-04-01 13:00:00 | 2010-03-10 12:00:00 | 22 |
+---------------------+---------------------+------+
5 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您需要计算到第二个的天数差异:
SELECT TIMESTAMPDIFF(SECOND,'2010-09-21 21:40:36','2010-10-08 18:23:13')/86400 AS diff
Run Code Online (Sandbox Code Playgroud)
它会回来
diff
16.8629