【问题标题】:Lookup Error ORA-00932: inconsistent datatypes: expected DATE got NUMBER查找错误 ORA-00932:不一致的数据类型:预期的 DATE 得到了 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,我现在很尴尬

标签: sql oracle


【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-31
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-24
        • 2019-05-04
        相关资源
        最近更新 更多