Oracle选择某个时间段内数据的问题

select * from tab_dc t where begintime > to_date('2011-8-22 8:00:00','yyyy-mm-dd hh24:mi:ss') and begintime < to_date('2011-8-22 12:30:00','yyyy-mm-hh hh24:mi:ss')
执行显示ora-01813:只能指定一次小时
不明白那里错了,求正确解答!

最后一个yyyy-mm-hh写错了,应该为yyyy-mm-dd。
还有最好写成:
select * from tab_dc t where begintime between to_date('2011-8-22 8:00:00','yyyy-mm-dd hh24:mi:ss') and to_date('2011-8-22 12:30:00','yyyy-mm-hh hh24:mi:ss')

在大数据量有索引的情况下,能很大的提高查询效率。使用‘> ’‘<’号的话,oracle会放弃索引,进行全盘扫描。养成好习惯。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-23
sql 写错了,dd写成hh了。呵呵。
begintime < to_date('2011-8-22 12:30:00','yyyy-mm-hh hh24:mi:ss')
改为
begintime < to_date('2011-8-22 12:30:00','yyyy-mm-dd hh24:mi:ss')
就对了。

正确的语句是:
select * from tab_dc t where begintime > to_date('2011-8-22 8:00:00','yyyy-mm-dd hh24:mi:ss') and begintime < to_date('2011-8-22 12:30:00','yyyy-mm-dd hh24:mi:ss')本回答被提问者采纳
第2个回答  2013-03-07
< to_date('2011-8-22 12:30:00','yyyy-mm-hh hh24:mi:ss') 最后这个地方,你看你的dd写成了hh
yyyy-mm-hh < ---- 就是这个位置