Oracle中插入默认时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中插入默认时间相关的知识,希望对你有一定的参考价值。
数据库中date列的默认值是sysdate 在使用struts+hibernate+spring的情况下 怎么在插入数据的时候在date列中插入系统时间?我的总报异常,dpo的date为null...
问题是我用三个框架写的····sql语句不由我控制的···
分两种情况,一种是创建表时自动创建带有默认值的字段,一种是把没有默认值的字段设置为有默认值的字段。
第一种情况:
1
2
3
create table test
(id int,
starttime date default sysdate not null );
插入测试数据:
1
2
insert into test (id) values (1);
commit;
验证结果:
第二种情况,比如在test表中加一个endtime,时间也要求是系统默认时间。
添加字段且不设置默认值:
1
alter table test add endtime date;
添加默认值语句:
1
alter table test modify endtime default sysdate;
测试语句:
1
2
insert into test (id) values (2); 参考技术A 插入oracle服务器当前时间
insert into tb (date) values (sysdate);--sysdate为oracle服务器当前时间
插入自定义时间
insert into tb (date) values to_date('2008-06-09','yyyy-MM-dd'); 参考技术B 这个是在数据库中设置吧,把数据表中对应字段的default值该系统时间按就行了。 参考技术C 定义时间变量
用for...loop循环十二次插入数据,用add_months(to_date('&date','yyyy-mm-dd'),1)
每循环一次加一个月。
declare
nba_date
date
:=
sysdate;
begin
for
i
in
1
..
12
loop
nba_date
:=
add_months(
to_date(nba_date),1);
insert
into
nba
values
('00','00',nba_date);
end
loop;
end; 参考技术D sql语句的sysdate不要加'',你再看看sql其它有没有问题。
如何在oracle表中插入系统时间
参考技术A 有关日期的操作中,更多的是涉及系统当前时间,用sysdate表示即可,如果是插入其他非系统时间的日期类型数据的话,用to_date转换再插入就可以了。例:1 insert into 表(c_date) values(to_date('20120927 20:09:47','YYYYMMDD HH24:MI:SS'));
另外:有些日期字段中会有一些默认数据,所以to_date还是挺有用的。如:
1 startdate date DEFAULT to_date('2000-01-01','yyyy-mm-dd')! 参考技术B 应该使用函数sysdate
以上是关于Oracle中插入默认时间的主要内容,如果未能解决你的问题,请参考以下文章
hibernate在Oracle中插入数据,默认字段被设置为null的问题解决