代码之家  ›  专栏  ›  技术社区  ›  Jimenemex

在SQL优化顾问中绑定日期

  •  0
  • Jimenemex  · 技术社区  · 6 年前

    我试图使用Oracle SQL Developers SQL Tuning advisor将日期绑定到变量,但它将其识别为 VARCHAR2 DATE . 是否有方法指定绑定的参数的数据类型?

    SQL语言:

    SELECT * FROM Actv
    WHERE ActvId = :in_UserGrpCds AND ActvTime >= :in_FromDate AND ActvTime < :in_ThruDate
    OFFSET :in_CurrRecordOffset FETCH NEXT :in_NextRecordOffset ROWS ONLY;
    

    Image

    in_ThruDate 作为一个 它不能运行的曲调。

    Bind Variables :
     1 -  (NUMBER):1091
     2 -  (NUMBER):0
     3 -  (VARCHAR2):07-21-2018
     4 -  (NUMBER):50000
     5 -  (VARCHAR2):08-21-2018
    
    -------------------------------------------------------------------------------
    ERRORS SECTION
    -------------------------------------------------------------------------------
    - ORA-00932: inconsistent datatypes: expected DATE got NUMBER
    
    -------------------------------------------------------------------------------
    
    1 回复  |  直到 6 年前
        1
  •  4
  •   Kris Rice    6 年前

    我们只绑定字符串/数字/空值,因此请调整SQL以包含结束日期:

    SELECT * FROM Actv
    WHERE ActvId = :in_UserGrpCds 
    AND ActvTime >= to_date(:in_FromDate ,'MM-DD-YYYY')
    AND ActvTime < to_date(:in_ThruDate ,'MM-DD-YYYY')
    OFFSET :in_CurrRecordOffset FETCH NEXT :in_NextRecordOffset ROWS ONLY;