2017-04-07 8 views
1

パラメーターの年に月と日を追加できる必要があります。SQLパラメーターとして月と日付を追加する

私たちの会計年度は毎年7月1日から始まるので、ユーザは会計年度「YYYY」をパラメータとして入力することができ、前年の7月1日に開始した会計年度の結果が返されるようにする必要がありますその年はその年の7月1日に始まり、終わりました。

たとえば、 2016年度には、2015年7月1日以降に終了し、2016年6月30日より前に開始するすべてのレコードが必要です。現在、ユーザーは7月1日と6月30日を指定する必要があります。年?

は、現在動作しますが、パラメータ

Where (E.end_date > @param1 Or E.end_date Is Null Or @param1 Is Null) And 
    (E.start_date < @param2 Or e.start_date Is Null Or @param2 Is Null) 

として完全な日付が必要です。しかし、これは、少なくともウィジェットで、彼らは私たちの記録のために、入力されたSQLに私を与える

Where (A.end_date > @param1 Or A.end_date Is Null Or @param1 Is Null) And 
    (A.start_date < DateAdd(day, 1, @param2) Or A.start_date Is Null Or 
     @param2 Is Null) 
     And 
     (A.end_date > dateadd(yyyy,-1,'@param3-07-01') And 
    A.start_date < '@param3-07-01' Or @param3 Is Null) 

SQLを、動作しません。ソフトウェアで'@param3-07-01'の構文が好きではありません。日付の評価のために日付文字列にパラメータを入れますが、'2016-07-01'は、などのwhere句の中にパラメータを入れることができるようになります0

+2

どのSQLサーバーを使用しますか? – cmks

+0

]ベンダーから:Credibleはこの情報を独自のものとして共有していませんが、IT部門に確認したところ、作成したクエリが標準のSQLであれば実行されます。その他ご不明な点がございましたら、お知らせください。 –

答えて

0

私はこれを後ろ向きに見ていました。解決策は、年パラメータを日付に変換するのではなく、日付を年に変換することでした。

year(dateAdd(mm,6,A.start_date)) 
year(dateAdd(mm,6,A.end_date)) 

私はそれを自分のコードに差し込みました。

Where (year(dateAdd(mm,6,A.end_date)) > @param1 Or A.end_date Is Null Or @param1 Is Null) And 
    (year(dateAdd(mm,6,A.start_date)) < DateAdd(day, 1, @param2) Or A.start_date Is Null Or @param2 Is Null)