如何在sql developer“Enter Binds”对话框中使用日期变量?

时间:2014-03-28 15:53:18

标签: sql oracle oracle-sqldeveloper

我正在尝试从sql developer运行查询,查询有变量(:var)。我对日期变量有疑问。

我使用所有可能的组合来使用to_date()函数格式化日期。 每次都得到以下异常:

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

抱歉无法在此处发布图片

7 个答案:

答案 0 :(得分:9)

尝试将您的查询更改为:

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

然后在提示时输入'20-JAN-2010'

答案 1 :(得分:2)

只需从Oracle社区论坛复制答案:

  

您应该能够输入符合您的日期   NLS_DATE_FORMAT设置。

     

例如如果NLS_DATE_FORMATDD-MON-YYYY,则可以输入   24-jan-2011表示今天的日期。

为我工作。

答案 2 :(得分:1)

尝试使用替换变量。例如:

select (&var - 1) from dual;

sql developer会要求您输入替换变量值,您可以使用日期值(例如sysdate或to_date(' 20140328',' YYYYMMDD')或任何日期你希望)。

答案 3 :(得分:1)

尝试:

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

然后输入01.02.2017(不含')之类的内容作为:my_var

的值

答案 4 :(得分:0)

这是不可能的。可能是因为SQL plus没有它。

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

答案 5 :(得分:0)

在查询中以以下格式提供日期

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

并在执行来自SQL Developer的查询时,将var bind参数的值提供为29-DEC-1995

请注意,您不应使用引号。它由SQL开发人员隐式完成。 祝您编码愉快!

答案 6 :(得分:0)

我不明白为什么(即使我可以想象...),但是:

  • 此select语句有效::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');