【BUG】一个有趣的BUG--连续推送两次

在这里插入图片描述
今天测试功能的时候,发现了一个有趣的BUG,特种设备推送,提前7天和提前30天各推送了一次。

当天怎么可能既间隔7天,又间隔30天呢。

我去数据库模拟了测试数据:

在这里插入图片描述

今天是2022年3月29日。

然后通过SQL进行筛选符合条件的记录。

SELECT id, spec_id, spec_name, dept_name, push_time, next_inspection_date,
               differ, receive_man
        FROM (SELECT *, DATEDIFF(push_time, now()) AS differ FROM spec_push) a
        WHERE a.differ IN (30,7,0);

在这里插入图片描述
我发现竟然真的查出来2条数据,那么的确应该推送。

可是不对啊,一个是4月5号,一个是4月28号,它们的确距下次验收日期5月5号间隔30天和7天。

可是,今天不是4月5号,也不是4月28号,为什么要今天推送呢?

后来我忽然发现了一个问题。
在这里插入图片描述
我判断的是推送时间和当前时间比对,是否间隔30天,7天和0天?

这里分明是写错了。

pushTime和确定推送的时间,只要当天==pushTime,则进行推送,为什么要这么判断呢?

大错特错!

所以正确的写法,应该是判断push_time是否等于当前时间:

SELECT id, attach_name, dept_name, push_time, next_inspection_date,
               forward, receive_man
        FROM (SELECT *, DATEDIFF(push_time, now()) AS differ FROM safe_push) a
        WHERE a.differ = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值