分两种情况,一种是在创建表的时候直接设置date类型,另一种是在表已存在的情况下,更改某字段类型为date。
第一种情况:
create table test
(id int,
ttime date);
如,上述内容是直接设置ttime字段类型为date。
第二种情况:
alter table test modify ttime date;
如,上述是将test表中的ttime字段在非date类型的情况下改为date类型,但前提需要是表内无数据,否则执行会报错。
SQL Plus 里面, 暂时设置一下 Session 里面的 日期格式显示的设置。
SQL> ALTER session
2 SET nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
然后 SELECT wgrq FROM yy_xmxx WHERE jsnd='2009' 看看。
首先确认数据库的数据,被正确的更新了。
至于那个 在前台看到的是1899-12-30。
不知道那个 前台是什么软件写的了。
语句没有问题...
问题在你去查看结果的时候 显示的问题...
那是你的session设置问题...
将 NLS_DATE_FORMAT设置下
SQL> ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss';
一劳永逸的方法是:
去x:\oracle\product\10.2.0\db_1\sqlplus\admin下的glogin.sql脚本下进行编辑,永久有效,不用每次都设置。
试试下面这样:
update yy_xmxx set wgrq=to_date('2009-12-30','yyyy-mm-dd','NLS_DATE_LANGUAGE = American')where jsnd='2009'