首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MYSQL中计算时间差

问如何在MYSQL中计算时间差
EN

Stack Overflow用户
提问于 2012-12-04 19:46:01
回答 4查看 13.5K关注 0票数 6

我有使用MYSQL作为数据库的Rails应用程序。在某些情况下,我必须删除表中的所有记录,这些记录恰好在当前时间之前2小时存储。

我的问题是:

代码语言:javascript
复制
DELETE FROM TABLE_NAME WHERE (NOW() - created_at) > 7200;

这里的create_at是datetime列类型。存储格式为"2012-12-04 06:39:44“

我的问题是,上面的查询获取记录,即使记录创建时间只有40到50分钟,并被删除。唯一问题是该记录在其创建时间达到40到50分钟后被删除。

有人能纠正我的疑问吗?我想要MySQL解决方案。请帮帮我

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-04 19:49:45

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

代码语言:javascript
复制
DELETE FROM TABLE_NAME WHERE created_at = NOW() - INTERVAL 2 HOUR

或者这个,它将删除2小时前创建的所有记录:

代码语言:javascript
复制
DELETE FROM TABLE_NAME WHERE created_at < NOW() - INTERVAL 2 HOUR
票数 4
EN

Stack Overflow用户

发布于 2012-12-04 19:50:53

试试这个::

代码语言:javascript
复制
DELETE FROM TABLE_NAME WHERE TIMEDIFF(NOW(),created_at) < '02:00:00';
票数 2
EN

Stack Overflow用户

发布于 2012-12-04 19:52:53

尝试:

代码语言:javascript
复制
DELETE FROM TABLE_NAME WHERE created_at<DATE_SUB(NOW(),INTERVAL 2 HOUR)

此查询将删除2小时前创建的所有内容。用等号表示恰好是2小时前(单位为秒)。当然,您可以将日期格式设置为只考虑分钟,但这会减慢查询速度。如果created_at是索引的(我认为应该是索引的),不要对它执行任何函数,这样它就可以使用索引更快地执行delete。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13702164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档