Oracle 10g ,pl/sql
中,我有一张表saleorder_master 中有一个bill_date 为date类型的字段,有人做了一笔记录,我用sql读出来:
SELECT to_char(saleorder_master.bill_date, 'yyyy/mm/dd'),saleorder_master.bill_date from saleorder_master WHERE BILl_NO = 'SO10090196'
显示:0000/00/00 2010/9/4
不知道为什么不能转化,我用saleorder_master.bill_date between d1 and d2发现它不属于任何日期。
能到是输入了全角数字吗?像各位大侠请教。update saleorder_master set bill_date = to_date('2010/09/04','YYYY/MM/DD') where BILl_NO = 'SO10090196'   
就可以了。
SELECT to_char(saleorder_master.bill_date, 'yyyy/mm/dd'),saleorder_master.bill_date from saleorder_master WHERE BILl_NO = 'SO10090196'显示:2010/09/04 2010/9/4我在pb的开发环境中读出来是2010/09/04 ??:??:?? 其他的数据后面的时分秒都是数字,oracle的bug吗?
如果数据不合法应该不能保存。

解决方案 »

  1.   

    我也觉得奇怪,SELECT To_Char(To_Date('2010/9/4','yyyy/mm/dd'),'yyyy/mm/dd') FROM dual;
      

  2.   

    --试下这个多余的看 ,把它转为日期型的在转字符型的
    SELECT 
    to_char(to_date(saleorder_master.bill_date,'yyyy/mm/dd'),'yyyy/mm/dd') dt,saleorder_master.bill_date from saleorder_master WHERE BILl_NO = 'SO10090196'
    至于乱码的问题 那估计是pb方面了
      

  3.   

    pb哈,用了一年,个人感觉优先考虑下是PB都BUG吧,呵呵用其它工具进行SQL查询可以得到正确结果?查看下字段类型是什么类型都?TIMESTAMP?还是DATE的