0

ASP.NETアプリケーションのいくつかのSQLステートメントに取り組んでいます。必要なことの1つは、オープン期間の情報のみを表示することです。前の期間が閉じられると、期間はベンダーソフトウェアによって自動的に更新されます。だから私は自分が次のようなサブセレクトの束をやっていることに気づきました:

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

はい、日付の各部分は別々のフィールドにあります。

このクエリを関数にすると、クエリがより効率的になりますか?関数を作成したことがないのですが、どうすればよいですか?私の考えは次のようなものです。

IsInRange(date)

だから私はすることができますWHERE IsInRange(date)

それとももっと良い方法はありますか?

4

3 に答える 3

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)
于 2011-02-11T02:54:49.820 に答える
0

はい。ただし、関数のポイントはコードの再利用です。他の場所でこれを行っている場合、またはそれを予期している場合は、それを実行してください。

于 2011-02-09T21:59:53.677 に答える
0

今のところ、フィールドを1つの日付に結合するビューを作成しました。これにより、少なくともクエリが大量にクリーンアップされました。

于 2011-02-24T01:39:32.037 に答える