为什么我填充的3周时间表今天返回false



我构建了一个应用程序,旨在成为自助餐厅的在线菜单。但由于某种原因,即使它已经被填充,今天也没有归还任何物品。这是我用来提取项目的SQL查询:

Select num, FoodItem, Week, Day, Station, Site 
  from FoodMenu WHERE [Week] = (DATEPART(WEEK, GETDATE()) % 3) + 1 
  AND [Day] = DATEPART(DW, GETDATE()) -1

星期一设置为Day 1,星期日设置为Day 7

-1看起来不正确,因为它会产生以下结果(请注意,当您实际想要7时,周日为0):

Day|DOW|转换星期日|1|0星期一|2|1星期二|3|2星期三|4|3星期四|5|4星期五|6|5星期六|7|6

你真正想要的是:

Day|DOW|转换星期日|1|7星期一|2|1星期二|3|2星期三|4|3星期四|5|4星期五|6|5星期六|7|6

最简单的方法是使用一个案例:

[Day] = CASE WHEN DATEPART(WEEKDAY, GETDATE()) = 1 THEN 7 ELSE DATEPART(WEEKDAY, GETDATE()) - 1 END

最新更新