我有一个SQLDeveloper表,其中有一列表示日期。
在表的顶部有一个过滤功能,我想知道如何搜索特定日期。例如:我在过滤器中写什么作为SQL命令来查找日期“20141119
”(格式为“yyyymmdd
”)
答案 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是一种很好的格式选择。