【发布时间】:2019-03-22 09:41:45
【问题描述】:
我需要一个WHERE 声明,其中记录的日期是前一天。我有下面的代码可以做到这一点
WHERE DOC_DATE = dateadd(day,datediff(day,1,GETDATE()),0)
但是当今天是星期一时,我需要这个语句来获取星期五的记录。我有以下代码,但它对我不起作用。尽管也没有返回记录结果,但 SQL 上没有返回错误。我有下面的代码
WHERE DOC_DATE = DATEADD(day, CASE WHEN datepart(dw,(GETDATE())) IN (2) then -3 ELSE -1 END ,0)
重要的是要补充一点,这需要在WHERE 子句中。这是针对我正在创建的 Docuware 管理视图。我无法控制如何编写SELECT 语句,我只能编辑WHERE 子句:
【问题讨论】:
-
你根本就没有公共假期吗?通常此时您应该考虑工作日,而不是像“周一至周五全天都是工作日”这样的简单规则。此时,您通常希望创建一个日历表,而不是尝试即时计算这些内容。
标签: sql sql-server date where-clause getdate