如何从SQL表中选择WHEST TIMESTAMP是一个特定的Date

时间:2013-10-09 14:02:49

标签: sql oracle select timestamp where-clause

我尝试进行查询,其中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部分不匹配的事实有关

1 个答案:

答案 0 :(得分: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。)