2014-11-20 41 views
0

我有一个SQLDeveloper表,其中有一列指示日期。表中的Oracle搜索函数

在表的顶部有一个过滤功能,我想知道如何搜索特定的日期。例如:什么是我写的SQL命令,在过滤器来查找日期“20141119”(格式为“yyyymmdd”)

+0

该列的类型是什么? – 2014-11-20 19:59:13

+0

该列中的数据类型是VARCHAR2 – paul 2014-11-20 20:09:59

+0

我想要做的仅仅是使用过滤器函数来显示带有日期“20141119”的所有结果 – paul 2014-11-20 20:14:52

回答

0

如果您使用的是Oracle,你可以使用to_char()将值转换。你必须要小心,因为一个Oracle date列还可以包含时间分量:

WHERE trunc(col) = to_date('201411119', 'YYYYMMDD') 

然而,最好是避免列名的函数调用 - 这阻碍了索引的使用。所以,如果你知道没有时间组件,然后使用:

WHERE col = to_date('201411119', 'YYYYMMDD') 

如果你不是100%肯定,然后使用:

WHERE col >= to_date('201411119', 'YYYYMMDD') AND col < to_date('201411119', 'YYYYMMDD') + 1 

编辑:

如果类型是varchar2(),那么推测它与输入格式相同。你可以这样做:

WHERE SUBSTR(SENDINGTIME, 1, 8) = '20141119' 

如果有另一种格式,那么你应该使用to_date()如上所述将其转换。

一般来说,您应该使用本地数据库格式存储日期和时间 - 毕竟,这就是它们在那里的原因。如果你必须将它们存储为一个字符,那么YYYYMMDD是格式的一个很好的选择。

+0

我尝试了过滤器中的所有命令,但都没有给出关于“20141119”的所需输出。我应该补充说,日期栏标有“SENDINGTIME” – paul 2014-11-21 12:07:22