2011-02-09 9 views
0

私はASP.NETアプリケーションのいくつかのSQL文について取り組んでいます。必要なことの1つは、公開期間内にのみ情報を表示することです。この期間は、前の期間が終了するとベンダーソフトウェアによって自動的に更新されます。だから私のようなサブ選択の束やって自分を見つける:機能するかどうかは、手元の質問です

where date >= (SELECT DATE(CONCAT('20', CONCAT(YY, CONCAT('-', CONCAT(MM, (CONCAT('-', DD))))))) FROM LIB/FILE') 

をはい、日付の各部分が別々のフィールドです。

このクエリを関数にするとクエリが効率的になりますか?私はそれをどうやってやるのでしょうか?だから私はWHERE IsInRange(date)を行うことができます

IsInRange(date) 

:私の考えはのようなものを持っています。

もっと良い方法がありますか?

+0

sql MSSQLまたはDB2はありますか? ibm-iタグのため... – rene

+0

これは、DB2/400 ...またはIBMが最近呼び出すものであれば何でも可能です。 –

+0

date> = RangeDate(YY、MM、DD) – rene

答えて

0

今、私は単一の日付にフィールドを結合するビューを作成するために、これは、少なくとも、クエリの束をクリーンアップ。

0

はい、機能のポイントはコードの再利用になります。あなたが他の場所でこれをやっている、またはそれを期待して、それを行ってください。

+0

私はこのアプリケーションを通して多くのクエリで使用しています。そして、私はそれをどのように作成するつもりですか? –

1
CREATE FUNCTION toDate(yy CHAR(2), mm CHAR(2), dd CHAR(2)) 
RETURNS DATE 
RETURN DATE('20' || '-' || yy || '-' || mm || '-' || dd) 

SELECT * 
FROM table 
WHERE date <= toDate(yy, mm, dd) 
+0

実際には、 'date> =(SELECT toDate(yy、mm、dd)FROM LIB/FILE)'のようになります。 –

関連する問題