2016-10-24 13 views
0

年を4つの四半期に分解しようとしているSQLレポートを作成しています。そして、年に応じて別のスクリプトを実行する必要がないように、私はすべてを1つから引き離そうとしています。だから、私がしようとしているのはwhere節にCASE文を入れて、年の四半期を計算し、xの日付はyとzの間にある必要があるということです。これは多くの構文エラーをもたらし、私はどこで見つけることができません。あなたは見てみることができるだろうと私にもそれが可能であることを教えてくれますか?SQLどのようにしたときに日付をx日にするか

`AND s.actual_arrival BETWEEN 
    CASE 
     WHEN MONTH(DATEADD(dd, -1, GETDATE())) < 4 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-01-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '03-31 23:59:59' 

    WHEN MONTH(DATEADD(dd, -1, GETDATE())) > 3 AND MONTH(DATEADD(dd, -1, GETDATE())) < 7 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-04-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '06-30 23:59:59' 
    WHEN MONTH(DATEADD(dd, -1, GETDATE())) > 6 AND MONTH(DATEADD(dd, -1, GETDATE())) < 10 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-07-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '09-31 23:59:59' 
    WHEN MONTH(DATEADD(dd, -1, GETDATE())) > 9 THEN YEAR(DATEADD(dd, -1, GETDATE())) + '-10-01' AND YEAR(DATEADD(dd, -1, GETDATE())) + '12-31 23:59:59' 
END` 
+0

どのDBMSを使用していますか? –

+0

明らかにSQL Serverコードであるため、質問SQL Serverにタグを付けました。 –

+0

MS SQLは申し訳ありません。ありがとうゴードン私はそのタグを逃した – Ardel

答えて

1

うん、ちょうどこれをするのは簡単ではないでしょうか?

and datepart(quarter, s.actual_arrival) = datepart(quarter, getdate()) and 
    year(s.actual_arrival) = year(getdate()) 
+0

私は今ダム感じるdatepart四半期0_0があります。私は今夜​​コードをテストし、それ以上の問題が発生しなければ正しい質問を記入します。 – Ardel

+1

@Ardel「私は今やダブって感じです」とクラブにようこそ。私たちはジャケット、会員カード、土曜の夜のミキサーを持っています。 –

関連する問題