Oracle中插入默认时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle中插入默认时间相关的知识,希望对你有一定的参考价值。

数据库中date列的默认值是sysdate 在使用struts+hibernate+spring的情况下 怎么在插入数据的时候在date列中插入系统时间?我的总报异常,dpo的date为null...
问题是我用三个框架写的····sql语句不由我控制的···

Oracle中插入默认时间
分两种情况,一种是创建表时自动创建带有默认值的字段,一种是把没有默认值的字段设置为有默认值的字段。
第一种情况:

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中插入默认时间的主要内容,如果未能解决你的问题,请参考以下文章

当按下默认插入记录按钮 oracle 表单时触发

hibernate在Oracle中插入数据,默认字段被设置为null的问题解决

oracle默认值not null,插入的时候不能赋null,否则会报错

如何给Oracle的数据添加默认值

Oracle查询优化-插入更新与删除

为oracle数据库列创建表时如何使用默认主键作为序列值