SQL/SSRS选择日期当天或之前的第一个工作日

SQL/SSRS选择日期当天或之前的第一个工作日,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,您好,我已将电子表格转换为SSRS报告,该报告在本月20日运行,我需要通过自定义表达式或数据集将本月20日作为默认值(开始日期)传递。如果第20个星期六,则默认为第19个星期五。如果20号在周日,则默认为18号周五。我该怎么做?最好的方法是什么?我希望这就是你想要的 select case datename(dw, getdate()) when 'Monday' then 'Friday' when 'Tuesday' then 'Monday' when 'Wednesday' th

您好,我已将电子表格转换为SSRS报告,该报告在本月20日运行,我需要通过自定义表达式或数据集将本月20日作为默认值(开始日期)传递。如果第20个星期六,则默认为第19个星期五。如果20号在周日,则默认为18号周五。我该怎么做?最好的方法是什么?

我希望这就是你想要的

 select case datename(dw, getdate())
 when 'Monday' then 'Friday'
 when 'Tuesday' then 'Monday'
 when 'Wednesday' then 'Tuesday'
 when 'Thursday' then 'Wednesday'
 when 'Friday' then 'Thursday'
 when 'Saturday' then 'Friday'
 when 'Sunday' then 'Friday'
 end
这个怎么样:

DECLARE @daytwenty date;
SET @daytwenty = DATEADD(mm, DATEDIFF(mm, 0, getdate()) ,19) --Get Twentieth Day of current month

SELECT 
      CASE DATEPART(DW,@daytwenty)
         WHEN 1 THEN DATEADD(dd, -2, @daytwenty) --When the twentieth day is a Sunday, take two days off
         WHEN 7 THEN DATEADD(dd, -1, @daytwenty) --When the twentieth day is a Saturday, take one day off
         ELSE @daytwenty --Else the twentieth day is a weekday already
      END

您应该为2008版本使用Datetime。通过写作

DECLARE @LatestDate date;
在以前版本的Sql Server中,出现编译错误

Column, parameter, or variable #1: Cannot find data type date.
下面是Sql server 2008的代码

DECLARE @LatestDate datetime;
SET @LatestDate = DATEADD(mm, DATEDIFF(mm, 0, getdate()) ,19) --Get Twentieth Day of current month

SELECT 
      CASE DATEPART(DW,@LatestDate)
         WHEN 1 THEN DATEADD(dd, -2, @LatestDate) --When the twentieth day is a Sunday, take two days off
         WHEN 7 THEN DATEADD(dd, -1, @LatestDate) --When the twentieth day is a Saturday, take one day off
         ELSE @LatestDate --Else the twentieth day is a weekday already
      END

“本月20日之前的第一个工作日”作为一个短语,将排除20日,因此对于17日星期一和19日任何其他工作日来说,正确答案也是如此?很抱歉,我对要求感到有点困惑,我已经澄清了……您无法配置SQL Server代理以在可变时间表上运行此作业。您可以在SQL中更改日期筛选器。如果你想要一个自动变化的时间表,那么就使用c#或java或其他什么:不是SQL Server有趣的被否决的答案(你得到了批评家徽章!),这些答案试图为你提出的问题提供SQL解决方案……对不起,我在解释我想要什么方面做得很糟糕。。。我需要的date函数正在作为SSRS报告中开始日期的默认值传递,可以作为自定义表达式传递,也可以作为数据集中的SQL查询传递。。。(我试图删除此问题并重新创建,使其更加清晰,但它不允许我…)+1这将起作用,但您需要确保每周的第一天是星期天<代码>设置日期优先7