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

解决方案 »

  1.   

    update之前那个字段是不是null啊.
    null你to_char还是null,所以只显示你selelct 列表里的第二个字段.
      

  2.   

    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
    update之前不是null
      

  3.   

    而且直接用between的任何范围这条记录都不能查找出来。
      

  4.   

    那就比较奇怪了,贴下过程吧.update之前值的情况.update之后值的情况.
      

  5.   

    SELECT to_char(saleorder_master.bill_date, 'yyyy/mm/dd'),saleorder_master.bill_date from saleorder_master WHERE BILl_NO = 'SO10090196' and bill_date is null
    这样有数据没
      

  6.   

    加个判断吧
    to_char(nvl(saleorder_master.bill_date,sysdate), 'yyyy/mm/dd'),
      

  7.   

    既然不是NULL,按理说一个DATE型的转成字符型的,to_char(saleorder_master.bill_date, 'yyyy/mm/dd') 是可以显示成两位的啊?我觉得不可能,你单独测试下呢
      

  8.   

    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 啊,显示
    2010/9/4,都没有几个人看到。
      

  9.   

    做更新:
    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
      

  10.   

    觉得有点奇怪,一般情况下这样操作应该可以的!LZ看一下数据库中其它表中date类型的字段是不是也这样显示呢?如果不是的话说明这条数据有问题!!!
      

  11.   

    又一次遇到这个问题,在pb的环境中读出这个日期的time部分为?,如  2010/09/04 ??:??:??,不知道这样的东西怎么能写进db,数据是pb开发的系统中输入的。2010/09/04 ??:??:??该数据不能转换,不属于任何日期范围,不知道这个值怎么能存入db中,难道是oracle的bug。
      

  12.   

    确实很奇怪
    你在oracle 自带的sql*plus试下看
      

  13.   

    我在pb的开发环境中读出来是2010/09/04 ??:??:??  其他的数据后面的时分秒都是数字,oracle的bug吗?