web-dev-qa-db-ja.com

SQL開発者の「Enter Binds」ダイアログで日付変数を使用する方法

SQL開発者からクエリを実行しようとしていますが、クエリには変数(_:var_)があります。日付変数に問題があります。

すべての可能な組み合わせを使用して、to_date()関数を使用して日付をフォーマットしました。例外を下回るたび:

_ORA-00932: inconsistent datatypes: expected DATE got NUMBER
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:
_

ここに画像を投稿できません

12
vermap

クエリを次のように変更してみてください。

select first_name,
       last_name,
       dob,
       org
  from emp
 where dob > to_date(:highDate,'DD-MON-YYYY');

次にプロンプ​​トが表示されたら、'20-JAN-2010'を入力します。

9
Mark J. Bobak

Oracleコミュニティフォーラムから回答をコピーするだけです。

NLS_DATE_FORMAT設定に準拠した日付を入力できるはずです。

例えばNLS_DATE_FORMATDD-MON-YYYYの場合、今日の日付として24-jan-2011を入力できます。

私のために働いた。

2
AntonLosev

試してみてください:

SELECT TO_DATE(:my_var, 'dd.mm.yyyy') my_date from dual;

次に、01.02.2017の値として':my_varなし)などを入力します

1
atavio

置換変数を使用してみてください。例えば:

select (&var - 1) from dual;

sql開発者は、日付値(sysdateまたはto_date( '20140328'、 'YYYYMMDD')または任意の日付)を使用できる置換変数値を入力するように要求します。

1
tbone

理由はわかりません(想像できたとしても...):

  • この選択ステートメントは機能します::date_var = 09122019

select * from t where date_field = to_date(:date_var,'ddmmyyyy');

  • 同様の削除または更新ステートメントは機能しません::date_var = 09122019

delete t where date_field = to_date(:date_var,'ddmmyyyy');

このエラーで:ORA-01847:月の日は1から月の最終日までの間になければなりません

「/」や「。」などの区切り文字を使用すると、削除は機能します::date_var = 09/12/2019

delete t where date_field = to_date(:date_var,'dd/mm/yyyy');

0
drx

不可能です。おそらくSQL plusにはないのでしょう。

https://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:2939749100346967872

0
DPA

クエリで、以下の形式で日付を指定します

to_date(:var,'DD-MON-YYYY')

sQL開発者からクエリを実行するときに、var bindパラメータの値を29-DEC-1995として指定します

すべきではない引用符を使用することに注意してください。 SQL開発者によって暗黙的に行われます。ハッピーコーディング!

0
Neel Alex