看看这样行不,insert into emp values(7839, KING,   PRESIDENT, NULL, 20811117, 5000,  NULL,  10);

解决方案 »

  1.   

    to:ikegami
    这个.....好像我还没有看到这样的date格式,请解释一下好么,
    insert into emp values(7839, KING,   PRESIDENT, NULL, 20811117, 5000,  NULL,  10);
                                         *ERROR位于第一行:
    ORA-00984:列在此处不允许
    还是这个错误
      

  2.   

    我刚刚查出来默认的日期格式就是:DD-MON-YY,也就是说我的日期方式没有错误,请指教到底错在什么地方!!谢谢
      

  3.   

    用TO_DATE转化。
    insert into emp values(7839, KING,   PRESIDENT, NULL, to_date('20811117','yyyymmdd'), 5000,  NULL,  10);
      

  4.   

    可是默认的日期格式就是:DD-MON-YY;难道说我的错了??
      

  5.   

    to: LGQDUCKY
    能不能你帮忙调试一下,如果你的是在9.2的版本下能够通过的话,写下来,不胜感激.
    因为刚刚学习SQL,以及没有Oracle的使用经验,所以比较"傻",好多东西不是能够轻易看明白的
    我还在慢慢的摸索阶段,因此.....
    多谢拉
      

  6.   

    DD-MON-YY掩码在数据库字符集不同的情况下是不同的。在oracle中的日期字段你最好都用to_data函数作转换,例如to_data('2003-10-11 20:50:10','yyyy-mm-dd hh24:mi:ss'),所有的掩码在Oracle SQL Reference中都有说明
      

  7.   

    楼上的是不是说
    在中文环境下就是'11-11月-81‘
    在英文环境下就是'11-NOV-81'
    这样的话就必须用TO_DATE来转变!
    那么怎么更改默认的语言!!
      

  8.   

    NLS_LANG=
    NLS_DATE_FORMAT
    可是怎么改这个东西???
      

  9.   

    用 To_Date() 来规范化一下就可以啦~to_date(日期,'格式')
      

  10.   

    chanet:这个to_date();我还是能够用的,可是即使用了以后还是出现错误,估计是中英文的问题,我的是中文环境9.2i,希望能够试验一下再帮我弄一下!!
    这个东西还真的是很麻烦的!!
    不是说说就行的!!
      

  11.   

    To caishuni试试如下语句看行不行:
    insert into emp values(7934,MILLER,CLERK,7782,
    To_Date('23-JAN-82','dd-mon-yy','NLS_DATE_LANGUAGE = American')),1300,NULL,10);
    -------------------------------------------------------------------
       用这种格式,但这个字段一定要是 日期型.还有:这种数据有 Y2K 的 Bug. 因为 year 是两位,通常是 四位.
    我试过,insert 之后,成为: 2082-01-23 啦~现在要解决的问题是清除 Y2k 这个 Bug.
    暂时可能解决的方法有两种: 
    1. 设置Oralce 里 Year 为两位的话,就是 19.. 带头。
    2. Insert 之后再更新。这样问题才真正解决. 一起努力吧~  
    我再帮你找一下资料。
    不过,你也要为 insert 了之后的处理 Y2K 问题呀~ :)
      

  12.   

    唉... :(
    找了好久,找不到 Oracle 对 Y2K 的处理.
    如果 caishuni 你硬要用两位数来做 year 的话,就用事后补救啦~ 把所有 HIREDATE 都改在 '19' 开头.
    语句:
    update emp set HIREDATE = To_date('19'||substr(to_char(HIREDATE,'yyyymmdd'),3,6),'yyyymmdd')作用:把所有的记录 里的 HIREDATE 字段都改成 '19'开头实现概述:用'19'来替换 HIREDATE 的前两位,形式一个 YYYY-MM-DD(年月日) 的规范.该方法用了两个函数:
    To_date(字符,格式); 主要是规范化日期的设置,在这里你可以随意更改格式.
    substr(字符,开始位数,总位数);把 yyyymmdd 去除前两位. (因为前两位用 '19' 补充)
      

  13.   

    To caishuni 呵呵...
    这样子的话,你的问题就全部解决完了  :)-------------------------(广告时间)-------------------------
    数据库的设计一定要注重规范化
       如:年月日 时分秒 (YYYY-MM-DD HH24:MI:SS);  (不过可以按项目而定)