1

假设我的起始日期为 2012 年 17 月 10 日,截止日期为 2012 年 10 月 18 日。我将如何找到可用的总秒数?

更新我不想选择已经超过日期的行?

提前致谢!

4

4 回答 4

2

这是工作演示。

http://sqlfiddle.com/#!2/d41d8/2869

SELECT UNIX_TIMESTAMP('2012-10-19') - UNIX_TIMESTAMP('2012-10-18') as differece_seconds;

“如果使用日期参数调用 UNIX_TIMESTAMP(),它将返回参数的值作为自 '1970-01-01 00:00:00' UTC 以来的秒数。”

您可以简单地将它与日期库一起使用。请检查:http ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_unix-timestamp

于 2012-10-18T11:14:12.560 回答
0

用于UNIX_TIMESTAMP()获取特定日期的纪元以来的秒数。然后只需减去两个值。

因此,假设值(在某些DATEDATETIME中)分别存储在col1col2中,使用可以使用如下内容:

SELECT UNIX_TIMESTAMP( col1 ) - UNIX_TIMESTAMP( col2 ) AS diff FROM yourTable;
于 2012-10-18T11:11:03.957 回答
0

假设您的列是正确的DATE/DATETIME列而不是问题中的日期字符串,请减去UNIX_TIMESTAMP()

SELECT UNIX_TIMESTAMP(date1_column) - UNIX_TIMESTAMP(date2_column) AS difference_seconds

如果您以上面发布的字符串格式存储日期(这是一个坏主意),您需要STR_TO_DATE()首先将它们解析为正确的 MySQL 日期。

SELECT UNIX_TIMSTAMP(STR_TO_DATE('17/10/2012','%d/%m/%%Y')) - UNIX_TIMSTAMP(STR_TO_DATE('18/10/2012','%d/%m/%%Y')) AS difference_seconds
于 2012-10-18T11:10:10.787 回答
0
 select timestampdiff(second,'2012-10-16','2012-10-18');

输出将是 172800

于 2012-10-18T11:29:17.540 回答