Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL中如何计算时差_Mysql - Fatal编程技术网

MYSQL中如何计算时差

MYSQL中如何计算时差,mysql,Mysql,我有一个Rails应用程序,它使用MYSQL作为数据库。在某些情况下,我必须从表中删除所有记录,该表在当前时间前2小时存储 我的问题是: DELETE FROM TABLE_NAME WHERE (NOW() - created_at) > 7200; 这里create_at是datetime列类型。以“2012-12-04 06:39:44”格式存储值 我的问题是,即使记录创建时间仅为40到50分钟并被删除,上述查询仍会获取记录。唯一的问题是记录在创建时达到40到50分钟后被删除 谁能

我有一个Rails应用程序,它使用MYSQL作为数据库。在某些情况下,我必须从表中删除所有记录,该表在当前时间前2小时存储

我的问题是:

DELETE FROM TABLE_NAME WHERE (NOW() - created_at) > 7200;
这里create_at是datetime列类型。以“2012-12-04 06:39:44”格式存储值

我的问题是,即使记录创建时间仅为40到50分钟并被删除,上述查询仍会获取记录。唯一的问题是记录在创建时达到40到50分钟后被删除


谁能纠正我的疑问。我想要MySQL解决方案。请帮助我

如果要删除恰好在2小时前创建的记录,您可能需要此文件:

DELETE FROM TABLE_NAME WHERE created_at = NOW() - INTERVAL 2 HOUR
DELETE FROM TABLE_NAME WHERE created_at < NOW() - INTERVAL 2 HOUR
或者,这将删除2个多小时前创建的所有记录:

DELETE FROM TABLE_NAME WHERE created_at = NOW() - INTERVAL 2 HOUR
DELETE FROM TABLE_NAME WHERE created_at < NOW() - INTERVAL 2 HOUR
DELETE FROM TABLE_NAME,创建位置为
试试这个:

DELETE FROM TABLE_NAME WHERE TIMEDIFF(NOW(),created_at) < '02:00:00';
从TIMEDIFF(NOW(),创建时间)所在的表名称中删除<02:00:00';
试试:


DELETE FROM TABLE_NAME WHERE created_at我知道您想删除在一段时间内创建的所有记录。因此,您不应该对减法运算应用“大于”运算符。相反,您应该尝试指定适当的时间范围

您还可以查看timediff函数


很抱歉,我无法为您发布正确的声明,因为我手头没有mysql服务器。

您在同一个表达式中混合了不同的数据类型。谢谢Fthiella,让我试试看,让你知道我会试试看,让你知道在我的情况下,我现在已经应用了interval()。这使得在列中创建的_保持不变,所以它可以使用索引更快地执行删除。