mysql 到期删除吗_MySQL在’到期’后删除行

我试图在MySQL数据库中删除过期的条目,在创建或更新名为lastBeat的字段时使用CURRENT_TIME进行更新,并使用以下查询来检查/删除超过20秒的行:

DELETE * FROM `rmachines` WHERE

`lastBeat` < (NOW() - 20);

我也尝试过CURRENT_TIME而不是NOW()

有2个主循环:

>每秒更新rmachines中的一行

>执行删除查询

如果2快速执行,当时间滚动到下一分钟(即59-60秒)时,它会删除该行,就像它已经过期一样(即使它确实没有!),否则它表现良好.

如果2每秒执行一次这不是那么明显,那么“错误到期”很少发生,但我每秒运行5次以暴露“问题”.

我找到了一个解决方案,经过测试并且似乎在相同的情况下工作:

但谁能告诉我为什么我的方法不起作用?

解决方法:

您正在将NOW()转换为数字,然后从中减去20.相反,您应该使用间隔减去20秒:

NOW() - interval 20 second

可以在这里看到差异:

SELECT NOW() - interval 20 second, NOW() - 20;

2010-06-11 00:06:49, 20100611000689.000000

^^ ^^

时间00:06:59将在00:06:49之后但在000689之前进行比较.

标签:delete-row,mysql,timestamp,datetime,sql-delete

来源: https://codeday.me/bug/20190730/1582265.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值