sql server中我创建表时设了一个字段默认为getdate(),为什么总是1900-01-01,急呀?

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:30:14
sql server中我创建表时设了一个字段默认为getdate(),为什么总是1900-01-01,急呀?
Create table t_mng_stateinfo (
operno_cr char(19) primary key not null,
opendate_cr datetime default getdate()
)

insert into t_mng_stateinfo values('440000000000000002','')

查询结果总是为:
440000000000000002 1900-01-01 00:00:00.000
为什么?急呀?

兄弟,原因在于你的这个语句
insert into t_mng_stateinfo values('440000000000000002','')
既然是默认,系统当你插入数据时,会自动获取这个时间,不需要赋空值
在SQL Server2000中,当一个时间值是空就会自动置为1900-01-01 00:00:00.000

插入语句写成这个就可以了
--主键不能重复,所以在这里用了440000000000000003
insert into t_mng_stateinfo(operno_cr) values('440000000000000003')

的确很邪门~~~ 用你写的语句测试,的确是无效,但是参照SQL联机丛书的李这个例子却执行正确

CREATE TABLE employees
(
emp_id char(11) NOT NULL,
emp_lname varchar(40) NOT NULL,
emp_fname varchar(20) NOT NULL,
emp_hire_date datetime DEFAULT GETDATE(),
emp_mgr varchar(30)
)