0

Oracleデータベースに基づくソフトウェアツールからデータを取得するためにSQLクエリを入力しています。私は典型的なSELECTステートメントを使用しています。

現在、SQLクエリでは、日付「02.05.2012」をさまざまな場所で使用しています。最初に変数を定義date_stringしてから、関連するすべての場所でこの変数を使用する方法はありますか?

これは物事を非常に単純化するでしょう。すべてのヒントをありがとう!

4

5 に答える 5

4

インライン ビューからリテラルを返すようにクエリを書き直そうとするかもしれません...

select
   my_date,
   ...
from(
   select to_date('02.05.2012','DD.MM.YYYY') my_date from dual),
   table2
where
   some_column <= my_date
于 2012-05-02T11:24:59.543 に答える
2

探しているのはバインド変数です。

select to-date(:date, 'dd.mm.yyyy') date1
,      to-date(:date, 'dd.mm.yyyy') + 1 date2
from   dual

実行時に、値をバインド変数に渡す必要があります。変数をバインドする方法はすべてプログラミング言語に依存しますが、それに関するドキュメントはたくさんあります。DEFINE は、sql*plus を使用する場合にのみ機能します。通常、「ソフトウェア ツール」内ではそうではありません :)

編集:

私は今、理解し始めています。これは、クエリを入力できる単なるテキストエリアであり、それを実行して結果を返します。その場合、複雑な pl/sql コードを記述するか、すべての日付を手動で入力するか、デュアルから選択してクロス結合を使用します。

with (select to_date('02.05.2012', 'dd.mm.yyyy') my_date from dual) d
select *
from   some_table t
cross join d -- no ON required 
于 2012-05-02T10:22:18.540 に答える
1

現在の日付を使用して選択する場合は、sysdate を使用できます。

SQLPLUS を使用すると、独自の変数を定義できます。

SQL> define mydate ="01-05-2012"

SQL> select to_date('&mydate','DD-MM-YYYY') from dual;

01-MAY-12
于 2012-05-02T08:48:35.193 に答える
0

DEFINEは、要件に役立ちます。

DEFINE NAME="example"

でアクセス&NAME

于 2012-05-02T08:59:52.400 に答える
0

以下を試してください:

SELECT *
  FROM table1
 WHERE to_char(date1,'DD/MM/YYYY') = '&&date'
   AND to_char(date2,'DD/MM/YYYY') = '&&date'
   AND to_char(date3,'DD/MM/YYYY') = '&&date'

&&date の値を入力するプロンプトが表示されます。日付ごとに異なる値を入力する場合は、 &&date の代わりに &date と入力してください。

于 2012-05-02T08:52:09.950 に答える