我的问题造成的原因是因为我们的程序从mysql转到oracle,所以不想去修改程序(量很大),而是想直接来修改oracle的默认存储格式来匹配我们的程序。请求帮助。

解决方案 »

  1.   

    基于那个表建一个视图,把其中DATE类型的字段如下处理:假设你要访问的表叫做 TALTER TABLE T RENAME TO T_kernel;create or replace view T as
    select .....,to_char(theDate,'YYYYMMDD') as theDate
    from t_kernel
    /这样程序就不用变动了
      

  2.   

    不过这种方式会导致 theDate 字段上的普通索引无法使用,
    如果要用索引,就得建立  to_char(theDate,'YYYYMMDD') 的函数索引
      

  3.   

    谢谢 boydgmx(授人以鱼不如授人以渔(baidu&google)) 老师的回复,如果 按照您的方法来操作,是不是要把所有含有Date的表都要加上您讲的view。表的量比较大吧,有180个table呢。请教有没有方法,可以直接修改到oracle的日期默认存储格式?这样来匹配是否可以行?
      

  4.   

    oracle日期在数据库存储的格式是固定的吧,你说你的oracle9i的存储日期格式为:dd-mon-yyyy,指的也是显示格式吧,修改注册表和配置文件修改的也只是显示格式而已,日期的内部存储格式应该是固定的,不能改变的。只要你定义的数据字段类型为date类型,你用to_date('20060531','yyyymmdd')和to_date('01-5月-2006','dd-mon-yyyy')插入日期数据都是一样的,也就是说你想像sqlserver一样直接将字符串插入date类型数据中是不行的
      

  5.   

    对于标准的日期的格式(YYYY-MM-DD)字符串,可以加date前缀转化成日期格式,如:date '2006-05-31' ,一般格式只能用to_date(),如果你的字段仅仅只是yyymmdd格式的,那用字符类型保存数据好了
      

  6.   

    谢谢duanzilin(寻) 答复:讲得比较有道理,我再考虑考虑。