如果在我的 where 子句中声明日期
If Statement in my where clause with dates
出于某种原因,我无法在我的组织中使用 SQL 中的工作日函数,因此我需要一些解决方法方面的帮助。我有一个 SQL 代码,它应该查询前一个工作日。所以这就是我们目前使用的:
select p.businessDate, p.accountNumber (more fields, but unecessary)
from Table p,
where p.businessDate = dateadd(DAY, -1, today())
问题出在星期一,当我们星期五需要数据时,此查询从星期日提取数据。有没有办法绕过使用 dateadd(WEEKDAY, -1, today())?此代码 运行 自动,周一至周五,每天。
我发现了一些我认为可以帮助到你的东西here。
如果你可以使用DATENAME
那么你可以检查当前日期的名称是否是'Monday'
。如果是,那么您可以 dateadd(DAY, -3, today())
.
而不是 dateadd(DAY, -1, today())
既然你说你可以使用DATEPART
,那么case语句检查当前日期是否是星期一,如果是,则减去3天得到星期五,否则减去1天,DATEPART
returns 一个数值,从 1 开始表示星期日,然后移动到 7 表示星期六,所以星期一是我们检查值 2 的关注日期,这是 SQL 服务器 语法。
select p.businessDate, p.accountNumber (more fields, but unecessary)
from Table p,
where businessDate = CASE WHEN DATEPART(WEEKDAY, GETDATE()) = 2
THEN DATEADD(DAY, -3, GETDATE())
ELSE DATEADD(DAY, -1, GETDATE()) END
DATEPART
文档 - datepart-transact-sql
出于某种原因,我无法在我的组织中使用 SQL 中的工作日函数,因此我需要一些解决方法方面的帮助。我有一个 SQL 代码,它应该查询前一个工作日。所以这就是我们目前使用的:
select p.businessDate, p.accountNumber (more fields, but unecessary)
from Table p,
where p.businessDate = dateadd(DAY, -1, today())
问题出在星期一,当我们星期五需要数据时,此查询从星期日提取数据。有没有办法绕过使用 dateadd(WEEKDAY, -1, today())?此代码 运行 自动,周一至周五,每天。
我发现了一些我认为可以帮助到你的东西here。
如果你可以使用DATENAME
那么你可以检查当前日期的名称是否是'Monday'
。如果是,那么您可以 dateadd(DAY, -3, today())
.
dateadd(DAY, -1, today())
既然你说你可以使用DATEPART
,那么case语句检查当前日期是否是星期一,如果是,则减去3天得到星期五,否则减去1天,DATEPART
returns 一个数值,从 1 开始表示星期日,然后移动到 7 表示星期六,所以星期一是我们检查值 2 的关注日期,这是 SQL 服务器 语法。
select p.businessDate, p.accountNumber (more fields, but unecessary)
from Table p,
where businessDate = CASE WHEN DATEPART(WEEKDAY, GETDATE()) = 2
THEN DATEADD(DAY, -3, GETDATE())
ELSE DATEADD(DAY, -1, GETDATE()) END
DATEPART
文档 - datepart-transact-sql