insert into tb(字段) values(isnull((convert(varchar(10),getdate(),120))),'1900-01-01')--or insert into tb(字段) values(isnull(输入值),'1900-01-01')
declare @a table(id int, date datetime default (convert(varchar(10),getdate(),120)))insert into @a(id)values(1) insert into @a(id,date)values(1,' ') insert into @a(id,date)values(1,0) insert into @a(id,date)values(1,1) insert into @a(id,date)values(1,2)select * from @a
insert into wjhgxxzb values ('443453434','中外运',112,'34343543453','进口','34345354','','','','') 最后的的确为空的。。跟踪了下。
字段设置了默认值,只有你不给这个字段赋值的时候才会使用默认值,否则使用你输入的值. 你的可以用casedeclare @a table(id int, date datetime default (convert(varchar(10),getdate(),120)))declare @date varchar(10) set @date = '' insert into @a(id,date) select 1,case when ltrim(rtrim(@date))='' then convert(varchar(10),getdate(),120) else @date end select * from @a
insert into tb(字段) values(isnull(输入值),'1900-01-01')
declare @a table(id int, date datetime default (convert(varchar(10),getdate(),120)))insert into @a(id)values(1)
insert into @a(id,date)values(1,' ')
insert into @a(id,date)values(1,0)
insert into @a(id,date)values(1,1)
insert into @a(id,date)values(1,2)select * from @a
最后的的确为空的。。跟踪了下。
你的可以用casedeclare @a table(id int, date datetime default (convert(varchar(10),getdate(),120)))declare @date varchar(10)
set @date = ''
insert into @a(id,date)
select 1,case when ltrim(rtrim(@date))='' then convert(varchar(10),getdate(),120) else @date end
select * from @a
我刚才做了个试验,如果我插入''那么就会变成1900-01-01,插入null就会变成getdate()
将空白字符串插入数据库时,数据库不会使用字段默认值,这时候SQLSERVER会自动将''字符串转换为时间格式,即为1900-01-01
id int,
date1 smalldatetime default convert(smalldatetime,(convert(varchar(10),getdate(),120))),
date2 smalldatetime not null default convert(smalldatetime,(convert(varchar(10),getdate(),120)))
)insert into #test (id) values (1)
insert into #test (id, date1) values (2,'')
insert into #test (id, date1) values (2,null)select * from #test1 2008-04-17 00:00:00 2008-04-17 00:00:00
2 1900-01-01 00:00:00 2008-04-17 00:00:00
2 NULL 2008-04-17 00:00:00