2017-01-07 9 views
2

私はSELECTクエリを使用してカレンダーTABLEからデータを取得します。金曜日、土曜日、日曜日のデータが必要な金曜日を除き、今日のデータを欲しい。これはdatetime値に2日間を追加する+ 2の省略表記を使用していることOR演算子を使用してWHERE句のCASE文

WHERE entry_date = CAST(GETDATE() AS DATE) OR 
     (DATEPART(dw, GETDATE()) = 6 AND 
     entry_date IN (CAST(GETDATE() + 1 AS DATE), CAST(GETDATE() + 2 AS DATE)) 
    ) 

注:私

+0

、ここ – McNets

+0

@McNetsがエラーメッセージであるエラーメッセージを投稿してください。 'メッセージ156、レベル15、状態1、行7 キーワード 'OR' の近くに不正な構文。 – Rich

+0

詳細を追加して質問を編集してください。コメントは使用しないでください。 –

答えて

0

これを試してみてください:

SELECT * 
FROM Calendar 
WHERE (DATEPART(dw,GETDATE()) = 6 
AND entry_date    IN (CAST(GETDATE() AS DATE), DATEADD(DAY, 1, CAST(GETDATE() AS DATE)), DATEADD(DAY, 2, CAST(GETDATE() AS DATE)))) 
OR (DATEPART(dw,GETDATE()) <> 6 
AND entry_date    = CAST(GETDATE()AS DATE)); 
+0

@ GurVそれは動作します、ありがとう – Rich

1

はこれを試してみてください不正な構文を与える

SELECT * 
FROM Calendar 
WHERE entry_date = 
CASE 
WHEN DATEPART(dw,GETDATE()) = 6 
THEN CAST(GETDATE() AS DATE) OR DATEADD(day, 1, CAST(GETDATE() AS DATE)) OR DATEADD(day, 2, CAST(GETDATE() AS DATE)) 
ELSE 
CAST(GETDATE()AS DATE) 
END; 

:ここに私のクエリです。必要に応じて、dateadd()を代わりに使用できます。

+0

これは動作しますが、今日は金曜日でなくても金曜日の結果が表示されます。私がクエリを実行した日は、金曜日にのみ私にこの蘇生を与えるはずです。他の平日は、私がそれを実行した日だけのデータを持っていたいと思います。 – Rich

+0

@Rich。 。 。これは、書き込みしようとしていたクエリの正確なロジックです。私はそれが他の日に金曜日の結果を与える方法を見ていない。 –

関連する問題