2012-01-23 2 views
0

나는 매일 수동으로 날짜를 입력 한 몇 개의 SQL 문이 있습니다.SQL Server 올바른 주말 계정 방법

날짜 부분을 자동화하고 싶습니다. 그러나 주말이 문제가되고 있습니다. 나는 그 보고서가 저장되고 다른 직원이 메일을 보냈을 때 보고서를 실행하는 데 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에있는 곳을 넣을까요? 예를 들어

select * from table where (date =) 
우리는 우리가 사전에 7, 8 및 구일 할 수 있도록 주말을 설명해야 할 때 그것은 금요일 않는 한 날짜가 사전에 7 일에 해당

?

답변

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) 
+0

좀 더 구체적으로 알려주시겠습니까? 또한 @@ datefirst 서버의 잘못된 설정 때문에 피해야합니다. –

+0

datepart (dw, getdate()) = @@ datefirst가 월요일인지 확인하는 더 좋은 방법입니다. case를 if로 변경하는 것은 조건을 Where 절에 넣는 방법에 대한 대답입니다. 더 명확하게 편집하겠습니다. – gordy

관련 문제