查找错误 ORA-00932:不一致的数据类型:预期的 DATE 得到了 NUMBER
Posted
技术标签:
【中文标题】查找错误 ORA-00932:不一致的数据类型:预期的 DATE 得到了 NUMBER【英文标题】:Lookup Error ORA-00932: inconsistent datatypes: expected DATE got NUMBER 【发布时间】:2013-08-20 08:15:53 【问题描述】:当我尝试运行此查询时,出现上述错误。有人可以帮我解决这个问题吗
UPDATE CCO.ORDER_CREATION
SET "Doc_Date" = 8/9/2013
WHERE "Document_Number" IN (3032310739,3032310740,3032310738)
【问题讨论】:
手头没有Oracle,但我猜8/9/2013
只是0.00044157
;-)
@ÁlvaroGonzález OMG,我现在很尴尬
【参考方案1】:
8/9/2013
是一个数值:8 除以 9 除以 2013。
您应该使用to_date()
函数将字符串转换为日期:
UPDATE CCO.ORDER_CREATION
SET "Doc_Date" = to_date('08/09/2013', 'dd/mm/yyyy')
WHERE "Document_Number" IN (3032310739,3032310740,3032310738);
您可能需要调整格式掩码,因为不清楚您是指 8 月、9 日还是 9 月 8 日
您也可以使用 ANSI 日期文字(ANSI SQL 日期文字的格式始终为 yyyy-mm-dd):
UPDATE CCO.ORDER_CREATION
SET "Doc_Date" = DATE '2013-09-08'
WHERE "Document_Number" IN (3032310739,3032310740,3032310738);
【讨论】:
【参考方案2】:试试这个
UPDATE CCO.ORDER_CREATION
SET "Doc_Date" = TO_DATE('8/9/2013', 'MM/DD/YYYY')
WHERE "Document_Number" IN (3032310739,3032310740,3032310738)
【讨论】:
也试过了。但我得到了这个错误。查找错误 ORA-01843: not a valid month @ÁlvaroG.Vicario:- 是的,我没有注意到。只是为了快速回答。读错了!!!【参考方案3】:目前您将日期作为数字字符串传递,将其转换为日期,然后尝试如下插入
UPDATE CCO.ORDER_CREATION
SET "Doc_Date" = TO_DATE('8/9/2013','MM/DD/YYYY')
WHERE "Document_Number" IN (3032310739,3032310740,3032310738)
【讨论】:
【参考方案4】:这就是我的看法:
UPDATE CCO.ORDER_CREATION tbl1
SET tbl.Doc_Date = TO_DATE('08/09/2013', 'MM/DD/YYYY')
WHERE tbl1.Document_Number IN (3032310739,3032310740,3032310738)
【讨论】:
以上是关于查找错误 ORA-00932:不一致的数据类型:预期的 DATE 得到了 NUMBER的主要内容,如果未能解决你的问题,请参考以下文章
Oracle Open Cursor for Using 给出错误 ORA-00932:不一致的数据类型
SQL 错误:ORA-00932:不一致的数据类型:预期的 CHAR 得到了 NUMBER
如何修复 PL/SQL:ORA-00932:不一致的数据类型:预期的 CLOB 得到了 -
ORA-00932 数据类型不一致: 应为 -, 但却获得 -
ORA-00932: inconsistent datatypes: expected - got NCLOBORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB 解决办法