【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
posted @ 2022-04-06 08:02  layman~  阅读(30)  评论(0编辑  收藏  举报