我试图做一个查询,其中 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 部分不匹配的事实有关

最佳答案

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

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。)

关于sql - 如何从 SQL 表中选择一个 TIMESTAMP 是一个特定的日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19274295/

10-10 14:59