我们在生产的第二天在数据库中输入我们的生产数据,我使用以下查询来获取昨天的数据。
查询工作正常,直到周末之后,周一没有显示任何内容,因为周末没有生产。
无论如何,我可以更改查询以显示生产的最后一天。
SELECT Date, ProductCode
FROM Production
WHERE (ProductCode In ('35032','40112-I','41212-I','50112','824-5'))
AND (Date=Dateadd(dd,-1,Convert(char(8),Current_timestamp,112)))
答案 0 :(得分:2)
一个简单的解决方案,使用CASE
语句检查是否是星期一,如果是,则减去3天而不是1天。
SELECT Date, ProductCode
FROM Production
WHERE (ProductCode In ('35032','40112-I','41212-I','50112','824-5'))
AND (Date=Dateadd(Day, Case When DatePart(WeekDay, Current_Timestamp) = 2 Then -3 Else -1 End, Convert(Date, Current_Timestamp)))
另一个(更精确的)解决方案是提取表格中最近的Date
,而不是今天的Date
:
SELECT Date, ProductCode
FROM Production
WHERE (ProductCode In ('35032','40112-I','41212-I','50112','824-5'))
AND (Date= (Select Max(Date) From Production Where Date <> Convert(Date, Current_Timestamp)))