语句如下select *
from openquery(his,'select * from zy_view_lis where to_date(to_char(sj,''YYYYMMDD hh24:mi:ss''),''YYYYMMDD hh24:mi:ss'')>sysdate-1 and si>0')报错
将数据类型 DBTYPE_DBTIMESTAMP 转换为 datetime 时出错。 请各位高手指教

解决方案 »

  1.   

    不明白为什么先to_char然后又to_char……
      

  2.   

    直接to_date报错,不知道那个字段是什么类型的,就先给转换了一下,
      

  3.   

    不知道字段是什么类型就转换,如果是date类型呢?
    所以转换类型之前最好知道是什么类型.....................
    desc table_name
    或者
    SQL> select column_name,data_type
      2  from user_tab_columns
      3  where table_name='EMP';
     
    COLUMN_NAME                    DATA_TYPE
    ------------------------------ --------------------------------------------------------------------------------
    EMPNO                          NUMBER
    ENAME                          VARCHAR2
    JOB                            VARCHAR2
    MGR                            NUMBER
    HIREDATE                       DATE
    SAL                            NUMBER
    COMM                           NUMBER
    DEPTNO                         NUMBER
     
    8 rows selected
      

  4.   

    如果是date类型我这边sql的表里也是date型,还会报这个错吗,还有就是我分别用了
    select *
    from openquery(his,'select * from zy_view_lis where to_date(to_char(sj,''YYYYMMDD''),''YYYYMMDD'')>sysdate-1 and si>0')
    报错  
    服务器: 消息 8114,级别 16,状态 8,行 1
    将数据类型 DBTYPE_DBTIMESTAMP 转换为 datetime 时出错。select *
    from openquery(his,'select to_date(csrq,''YYYYMMDD'') from zy_view_lis where sj>sysdate-1 and si>0') a报错
    服务器: 消息 7330,级别 16,状态 2,行 1
    未能从 OLE DB 提供程序 'MSDAORA' 中提取行。
    [OLE/DB provider returned message: ORA-01843: 无效的月份
    ]
    OLE DB 错误跟踪[OLE/DB Provider 'MSDAORA' IRowset::GetNextRows returned 0x80040e07]。
    select *
    from openquery(his,'select hznl,cast(csrq as date) from zy_view_lis where sj>sysdate-1 and si>0') a报错服务器: 消息 8114,级别 16,状态 8,行 1
    将数据类型 DBTYPE_DBTIMESTAMP 转换为 datetime 时出错。