我正在尝试从sql developer运行查询,查询有变量(:var
)。我对日期变量有疑问。
我使用所有可能的组合来使用to_date()
函数格式化日期。
每次都得到以下异常:
ORA-00932: inconsistent datatypes: expected DATE got NUMBER
00932. 00000 - "inconsistent datatypes: expected %s got %s"
*Cause:
*Action:
抱歉无法在此处发布图片
答案 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_FORMAT
是DD-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 * from t where date_field = to_date(:date_var,'ddmmyyyy');
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');