自动在数据库中插入日期

时间:2017-01-23 17:00:56

标签: oracle

create table assignments
( 
  loginid varchar2(6),
  comments varchar2(20), 
  status char(1), 
  given_by varchar2(6),
  courseanddept varchar2(15),
  adate date default sysdate, 
 foreign key(loginid) references login(loginid)
);

我有一个这种结构的表格,我无法自动插入sysdate。为了插入自动sysdate

,查询是什么?

2 个答案:

答案 0 :(得分:3)

如果您没有为日期列明确设置值,则将使用默认值;例如:

insert into assignments( loginid       , 
                         comments      ,
                         status        , 
                         given_by      , 
                         courseanddept 
                        )
                 values ( 'login',
                          'comments',
                          'X',
                          'Y',
                          'unknown'
                        )

结果数据:

SQL> select adate from assignments;

ADATE
---------
23-JAN-17

如果为列设置了值,则使用您设置的值并忽略默认值:

insert into assignments( loginid       , 
                         comments      ,
                         status        , 
                         given_by      , 
                         courseanddept ,
                         adate 
                        )
                 values ( 'login2',
                          'comments2',
                          'Z',
                          'W',
                          'unknown2',
                          date '2016-12-31'
                        ) 

给出:

SQL> select adate from assignments;

ADATE
---------
31-DEC-16

如果设置NULL值,则相同:

insert into assignments( loginid       , 
                         comments      ,
                         status        , 
                         given_by      , 
                         courseanddept ,
                         adate 
                        )
                 values ( 'login3',
                          'comments3',
                          'Z',
                          'W',
                          'unknown2',
                          null
                        )

给出:

SQL> select adate from assignments;

ADATE
---------


SQL>

答案 1 :(得分:0)

不要为“adate”列提供任何输入,因为你已经提到了默认的sysdate,所以每当你在插入时没有给出输入它会将它更新为sysdate,如果你给它值,它将取值并忽略sysdate 。请参考以上示例。你会明白的。