2011-11-23 43 views
4

我正在尝试在数据库中搜索基于日期的记录。但搜索基于月和年。即mm/yyyy,并且dd是通配符。使用通配符在日期搜索查询

我的搜索查询是这样的:

Select ucid, uc_name, From (UC_Table1) 
where UC_Date like To_Date('11/*/2011','mm/dd/yyyy') 

这给了我以下错误: ORA-01858:一个非数字字符被发现,其中一个数字是意料之中的,所以,很显然它不喜欢*%_?作为dd的通配符。

回答

4

通配符在函数内不起作用。在LIKE有机会看到它之前,To_Date()函数会分析出*。考虑:

SELECT ucid, uc_name 
FROM UC_Table1 
WHERE UC_Date >= To_Date('11/01/2011', 'mm/dd/yyyy') 
    AND UC_Date < To_Date('12/01/2011', 'mm/dd/yyyy') 
+0

谢谢你。我正在使用的查询是: 选择ucid,config_clob,Created_TS来自(Config_Clob) 其中to_Char(Config_Clob.Created_TS,'mmddyyyy')like '11%2011' – sloggers1894

+0

如果表的大小是任意的,那么您会更好像Adam建议的那样做(在UC_Date上有一个索引) –

+0

@MatthewWatson没有放置“@sloggers1894”,他们不会收到你的消息通知。默认情况下,只有拥有您要评论的问题/答案的人员以及最多由@name指定的人员。 –