数据库中日期数据其实不"简单"

日期数据应该使用单引号扩起来. 字符数据大小写敏感, 日期数据格式敏感. 默认的日期格式是 DD-MON-RR.有日期需求时,日期可能格式多样,所以要做显示转换,不要隐式转换

 

Oracle的注册表配置,参数配置,会话配置都会带来日期格式的变化
SQL> select last_name,hire_date from employees where hire_date='07-6月 -94';

更改会话设置后
SQL> alter session set nls_date_format='yyyy-mm-dd';
SQL> select last_name,hire_date from employees where hire_date='07-6月 -94';

解决方法做显式转换
where to_char(hire_date,’yyyy-mm-dd’)=’2011-9-11’但是这样做又会造成hire_date列上的索引失效
保证索引不失效的方法(提示: '2011-9-10'实际上是'2011-9-10  0点0分0秒')
where hire_date>=’2011-9-10’ and hire_date<’2011-9-11’

posted @ 2012-07-15 16:46  simplefrog  阅读(270)  评论(0编辑  收藏  举报