1

我正在尝试执行以下查询:

SELECT *
FROM OPENQUERY
(
    CLP,
    '
        SELECT *
        FROM ORACLE_TABLE
        WHERE [UPDATEDATE] > ''1900-01-01 12:00 AM''
    '
)

当我删除日期条件时,此查询工作正常。但是,一旦我尝试通过此标准,它就不再起作用了。我无法弄清楚我错过了什么。

4

2 回答 2

1

尝试删除[]添加转换日期:

SELECT * 
FROM OPENQUERY
(CLP, 
      '
         SELECT * 
         FROM ORACLE_TABLE 
         WHERE 
         UPDATEDATE > to_date(''1900-01-01 12:00'',''yyyy-mm-dd hh:mi'')
       '
)

或与am

SELECT * 
FROM OPENQUERY
(CLP, 
      '
         SELECT * 
         FROM ORACLE_TABLE 
         WHERE 
         UPDATEDATE > to_date(''1900-01-01 12:00 AM'',''yyyy-mm-dd hh:miam '')
       '
)
于 2012-10-02T20:45:38.590 回答
0

采用

SELECT *
FROM OPENQUERY
(CLP,SELECT * FROM ORACLE_TABLE WHERE trunc(UPDATEDATE) > ''01-JAN-1900'')

在 Oracle 中,所有没有时间组件的日期默认为 12:00 AM(或 00:00 Hrs)。

您也可以使用to_timestamp(UPDATEDATE),但为此,列应该是时间戳类型(即包含时间戳,否则它总是会给出 12 AM)。您也可以使用to_char(UPDATEDATE,'YYYY-MM-DD HH:MI AM').

于 2012-10-02T20:44:57.877 回答