记一次MySQL生产环境事故问题

场景:
查看当前时间是否在某一时间内
例如当前是 周一上午10点,就要去数据库查是否有每周一上午9-11点的数据

关键sql片段:

AND bw.week_day = DATE_FORMAT(#{date}, '%w')

看了半天业务代码,发现并没有出错,最后在sql上发现了问题

执行如下sql

SELECT  
DATE_FORMAT('2019-10-21 00:00:00', '%w') as w1, # 周一
DATE_FORMAT('2019-10-22 00:00:00', '%w') as w2, # 周二
DATE_FORMAT('2019-10-23 00:00:00', '%w') as w3, # 周三
DATE_FORMAT('2019-10-24 00:00:00', '%w') as w4, # 周四
DATE_FORMAT('2019-10-25 00:00:00', '%w') as w5, # 周五
DATE_FORMAT('2019-10-26 00:00:00', '%w') as w6, # 周六
DATE_FORMAT('2019-10-27 00:00:00', '%w') as w7  # 周日

在这里插入图片描述

发现周日是0而并非7,而关联的业务表里面的数值是7,导致了查询不到数据!

这次的事故,真的应该记一下,很基础的问题,缺发生了,不管在做任何东西的时候,一定要考虑好细节!

你可能感兴趣的:(程序人生)