如图
我怎么Insert一个如t$tdat字段0000/00/00的日期

解决方案 »

  1.   

    用to_date('2009-12-14','yyyy-m-d'),你的数据库日期格式应该是yyyy-m-d的
      

  2.   

    首先请看清楚我的问题。谢谢。。
    你to_date('0000/00/00','yyyy/mm/dd')试一下看出错不
    发图片的意思是要让大家明白,这个0000/00/00的日期并不为空,而是有值得。
    从dump看的出来,这个日期不是合法的,而是一个非法的日期。select 很容易。但是要insert 一般的方法oracle绝对给报错。
    但是肯定是有办法insert进去的。因为我们公司的ERP就可以insert一个这样的。
    图片上查询出来的数据就是我们公司ERP系统insert进去的。
      

  3.   

    这个问题没注意过!~ 搜索了一下,感觉前端应用程序写入数据库的可能性很大,给两个链接LZ看一下:[invalid date]閏于oracle中存進了invalid date的討論?处理Oralce中非法的日期值
      

  4.   

    select to_char(to_date('00010101','yyyymmdd')-366,'yyyy-mm-dd') from dual;TO_CHAR(TO_DATE('000
    --------------------
    0000-00-00
      

  5.   

    to_Date的时候对日期做验证了,但是转成日期后在做减法可以处理成非法的日期
      

  6.   

    看看这个帖子:http://topic.csdn.net/t/20020509/18/709323.html
      

  7.   

    lz把数据库中riqi字段默认值设成0000/00/00,然后在sql中向数据库插入空值试试
      

  8.   

    不好意思,前段时间有事情去了。
    问题是解决了。用了投机取巧的方法。
    我从我们ERP系统里面找一个日期是那种非法的值
    然后Update是可以更新文这个值得。而且和我们的ERP系统一致
    语句是 UPdate baan.ttdpur030310 set t$tdat=(select t$stdt from baan.ttiitm001310 where t$item='3003-0000003') where 
    baan.ttdpur030310.t$item='3003-0000001' and t$suno='010001'
    在这里 select t$stdt from baan.ttiitm001310 where t$item='3003-0000003' 是唯一的也是非法的一个日期值。
    这样UPDATE oracle是可以通过的。
    但是insert baan.ttdpur030310(t$tdat) values (select t$stdt from baan.ttiitm001310 where t$item='3003-0000003')就报错了。
    我想的既然UPDATE可以通过 Insert肯定也是可以的。只是没有找到一个有效的方法而已。谢谢大家
    我穷没多少分。每人分一点表示一下吧。