表中的Oracle搜索功能

时间:2014-11-20 19:51:03

标签: sql oracle

我有一个SQLDeveloper表,其中有一列表示日期。

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

1 个答案:

答案 0 :(得分: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是一种很好的格式选择。