4

我试图进行查询,其中 TIMESTAMP 字段 = 到特定日期,但我的查询不起作用:

该字段是 TIMESTAMP(6) 类型,我以前只使用过 DATE / DATETIME 字段。这是此处存储的值的示例: 04-OCT-13 12.29.53.000000000 PM

这是我的 SELECT 语句:

SELECT * FROM SomeTable WHERE timestampField = TO_DATE('2013-10-04','yyyy-mm-dd')

我没有检索到任何结果,我假设它与它与时间戳的 TIME 部分不匹配有关

4

1 回答 1

9

如果您想要在给定日期发生的每条记录,那么这应该有效:

SELECT * FROM SomeTable
  WHERE timestampField >= TO_TIMESTAMP( '2013-03-04', 'yyyy-mm-dd' )
    AND timestampField < TO_TIMESTAMP( '2013-03-05', 'yyyy-mm-dd')

这可能会利用索引timestampField是否存在。另一种方法是:

SELECT * FROM SomeTable
  WHERE TRUNC(timestampField) = TO_DATE( '2013-03-04', 'yyyy-mm-dd' )

在这种情况下,您可能需要基于函数的索引TRUNC(timestampField)

(请注意,应用于 TIMESTAMP 的 TRUNC 返回 DATE。)

于 2013-10-09T14:14:38.907 回答