2017-01-09 10 views
0

を無視して、今日と明日のためにレコードをフェッチ(だけで正常に動作)のみ今日と明日のためのアイテムを取得するには、以下のフィルタ:私はセットアップを持って週末

BETWEEN { fn CURDATE() } AND DATEADD(day; 1; GETDATE()) 

しかし金曜日に、私はとして月曜日の項目を取得する必要がありますよく - 私はこれを回避セットアップにIF文をしようとしていますが、私はまったく運を持っていないです。以下の例は、(動作しないこと)が、私はどのようにこれを正しく書くことへと困惑しています:

IF DATEPART(WEEKDAY, GETDATE()) IN (6) 
THEN BETWEEN { fn CURDATE() } AND DATEADD(day; 3; GETDATE()) 
ELSE BETWEEN { fn CURDATE() } AND DATEADD(day; 1; GETDATE()) 

答えて

4

方法について:

where (datepart(weekday, getdate()) = 6 and 
     datecol between cast(getdate() as date) and cast(getdate() + 3 as date) 
    ) or 
     (datepart(weekday, getdate()) <> 6 and 
     datecol between cast(getdate()as date) and cast(getdate() + 1as date) 
    ) 

注:私はbetweenを使用してのファンではありません日時。アーロンバートランドは、このことを説明する素敵なblog投稿されています。 BETWEENは、日付のために安全であるので、あなたはそれを指定しているように見えるように私は、ロジックを残しています。

+0

私はそれをSQLに直接入力すると、「キャスト」の近くに誤った構文が表示され、「AS」となることが予想されます。また、MSSQLスタジオ2k8のフィルタとして動作しません、私は関数の引数の数のエラーを取得します。 – Senko

関連する問題