SQL Server正确的方式来计算周末

时间:2012-01-23 15:27:34

标签: sql sql-server sql-server-2008 excel date

我有一些sql语句,我每天手动输入日期然后执行。

我想自动化日期部分。但是周末给我带来了麻烦。我使用excel运行报告,然后保存报告,另一名工作人员发送邮件。

这是我的测试示例:

if (datename(dw, getdate()) = 'Friday') BEGIN
select convert(varchar, dateadd(day, 7, DATEADD(dd, 0, DATEDIFF(dd, 0,getdate()))), 103)
 + ',' + convert(varchar, dateadd(day, 9, DATEADD(dd, 0, DATEDIFF(dd, 0,getdate()))), 103) AS [Date] END
ELSE BEGIN select convert(varchar, dateadd(day, 7, DATEADD(dd, 0, DATEDIFF(dd, 0,getdate()))), 103) as [Date] END;

但是我怎么把它放到sql where statement中呢?

例如

select * from table where (date = )

其中日期等于提前7天,除非是星期五,我们必须在周末交代,所以我们需要提前7,8和9天?

1 个答案:

答案 0 :(得分:1)

select * from table where date = (case
  when datename(dw, getdate()) = 'Friday' then
    convert(varchar, dateadd(day, 7, DATEADD(dd, 0, DATEDIFF(dd, 0,getdate()))), 103)
     + ',' + convert(varchar, dateadd(day, 9, DATEADD(dd, 0, DATEDIFF(dd, 0,getdate()))), 103)
  else
    convert(varchar, dateadd(day, 7, DATEADD(dd, 0, DATEDIFF(dd, 0,getdate()))), 103)
  end)