我试图通过知道列中的日期包含日期和时间来检索表中的记录。
假设我有一个名为 t1
的表,其中仅包含两列 name
和 date
。
存储在日期列中的数据如下 8/3/2010 12:34:20 PM
。
例如,我想通过此查询检索此记录(注意我没有输入时间):
Select * From t1 Where date="8/3/2010"
这个查询没有给我任何结果!
如何通过只知道日期
而不知道时间来检索日期
?
最佳答案
DATE
是 Oracle 中的保留关键字,因此我使用列名 your_date
来代替。
如果您在 your_date
上有索引,我会使用
WHERE your_date >= TO_DATE('2010-08-03', 'YYYY-MM-DD')
AND your_date < TO_DATE('2010-08-04', 'YYYY-MM-DD')
或之间<
:
WHERE your_date BETWEEN TO_DATE('2010-08-03', 'YYYY-MM-DD')
AND TO_DATE('2010-08-03 23:59:59', 'YYYY-MM-DD HH24:MI:SS')
如果没有索引或者记录不是太多
WHERE TRUNC(your_date) = TO_DATE('2010-08-03', 'YYYY-MM-DD')
应该足够了。 TRUNC
不带参数从 DATE
中删除小时、分钟和秒。
如果性能确实很重要,请考虑放置 Function Based Index
在该列上:
CREATE INDEX trunc_date_idx ON t1(TRUNC(your_date));
关于sql - 通过只知道日期而不知道时间来从表中选择(ORACLE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2399753/