SQL/SSRS选择日期当天或之前的第一个工作日
您好,我已将电子表格转换为SSRS报告,该报告在本月20日运行,我需要通过自定义表达式或数据集将本月20日作为默认值(开始日期)传递。如果第20个星期六,则默认为第19个星期五。如果20号在周日,则默认为18号周五。我该怎么做?最好的方法是什么?我希望这就是你想要的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
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