日期:2014-05-17 浏览次数:20716 次
select 1 from dual where to_date(20120430,'yyyymmdd')<=sysdate and sysdate<=to_date(20120508,'yyyymmdd');
------解决方案--------------------
这样呢?
SELECT count(*) FROM Alert where date'2012-04-30'<= firstTime and firstTime <= date'2012-05-07'
------解决方案--------------------
表达式的两边,一边是字符串,一边是时间类型,不能直接比较。如果看执行计划,你就可以看到进行了什么样的隐式转换了
隐式转换使用了如下的时间格式
select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
很明显,你用的字符串格式和它不一致
------解决方案--------------------
我在想 一个时间类型和 '2012-04-30'这个比较不会报错么?
'2012-04-30'不会自动转换成时间类型 应该会报错日期无效吧
------解决方案--------------------
很奇怪的语法,不过,倒也说明了oracle的自行处理逻辑。
这种错,别人还真不太好犯,希望楼主多多犯错,让大家多多学习。