2012-01-23 10 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文のどこにこれを入れたのでしょうか?それは、我々は、事前に7,8および9日たいので、週末のために考慮しなければならないとき金曜日のない限り、日が事前に7日間に等しい

例えば

select * from table where (date =) 

答えて

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が月曜日かどうかを確認する良い方法です。ケースをifに変更することは、条件をwhere句に入れる方法の答えです。より明確に編集します – gordy

関連する問題