假设我的起始日期为 2012 年 17 月 10 日,截止日期为 2012 年 10 月 18 日。我将如何找到可用的总秒数?
更新我不想选择已经超过日期的行?
提前致谢!
这是工作演示。
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
用于UNIX_TIMESTAMP()
获取特定日期的纪元以来的秒数。然后只需减去两个值。
因此,假设值(在某些DATE
或DATETIME
中)分别存储在col1
和col2
中,使用可以使用如下内容:
SELECT UNIX_TIMESTAMP( col1 ) - UNIX_TIMESTAMP( col2 ) AS diff FROM yourTable;
假设您的列是正确的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
select timestampdiff(second,'2012-10-16','2012-10-18');
输出将是 172800