最后一个工作日DB
我这一周的所有天的数据,我想找到最近的工作日数据即dayofweek != 1 and dayofweek != 7
最后一个工作日DB
我笨拙的WHERE与CASE是沿着
WHERE CASE WHEN dayofweek(curdate()) = 1 THEN day(time) = date_sub(day(time), interval 2 day)
WHEN dayofweek(curdate()) = 7 THEN day(time) = date_sub(day(time), interval 1 day)
WHEN dayofweek(curdate()) != 7 AND dayofweek(curdate()) != 1 THEN day(time) = day(curdate()) ELSE 1 = 1 END
东西线
此代码,day(time) = date_sub(day(time), interval 2 day)
从未匹配,因为day(time)
从未有过等于day(time) - 1 day
。这与在代数中说x=x-1
一样......它不是真的。我怀疑你真正的意思是做这样的事情:
WHERE CASE WHEN dayofweek(curdate()) = 1 THEN date(time) = date(date_sub(curdate(), interval 2 day))
...
...
... This part was left as an exercise for the asker.
的date()
功能消除了一部分时间,所以你可以就在一天进行比较。 The date_sub()
函数需要从curdate()
中减去以获取最近的工作日。在你的代码中,它是从存储在表中的DATETIME
中减去的。
是啊傻我只是一个逻辑错误! – rodling 2013-05-16 00:28:26
使用'date()'而不是'day()'也是非常重要的......'day()'返回当月的一天,所以它似乎在第一个月工作,但在第二个月,它将开始从当前月份的最后一个工作日*开始返回行,并从该月份的那一天开始返回行。* – 2013-05-16 00:47:12
向我们展示你到目前为止所拥有的。 – 2013-05-14 16:27:20
另一个考虑;如果是假期或商业关闭的任何一天呢? – 2013-05-14 16:28:41
@ChrisForrence还没有,周一至周五现在就足够了 – rodling 2013-05-14 16:35:06