当前位置: 代码迷 >> Sql Server >> 关于SQL SEVER 字段的数据类型datetime解决思路
  详细解决方案

关于SQL SEVER 字段的数据类型datetime解决思路

热度:296   发布时间:2016-04-24 09:27:16.0
关于SQL SEVER 字段的数据类型datetime
SQL SEVER 某 字段的数据类型是datetime,如果我设置他不能为空,那么我再插入数据时如果不插入这个字段的值,他会默认是系统的时间吗?
如果不是,那么怎么让这个字段的值为系统时间
------解决思路----------------------
使用getdate()作为默认值,否则不创建日期
------解决思路----------------------
会默认是系统的时间吗?
当然不是,是NULL
如果不是,那么怎么让这个字段的值为系统时间 
参考以下,修改表结构,添加默认约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名称 DEFAULT GETDATE()FOR 时间列名

------解决思路----------------------

create table x(id int , d datetime default getdate())
go
insert into x(id) values(1)
insert into x(id) values(2)
insert into x(id) values(3)
go
select * from x 
go
drop table x 
go
id          d
----------- -----------------------
1           2015-01-16 13:53:54.347
2           2015-01-16 13:53:54.347
3           2015-01-16 13:53:54.350

(3 行受影响)




------解决思路----------------------
引用:
那例如是出生日期,需要用户填写的,编写c#代码时是用字符串类型插入可以吗,还得转一下再插入
如果插入的字符串满足SQLSERVER对识别条件,可以用字符串插入,一般用yyyy-MM-dd HH:mm:ss格式的即可
------解决思路----------------------
C#最好是转成datetime类型,然后通过SqlCommander的参数、DataTable的字段等赋值,不要直接拼SQL。
这样就和SQL Server的语言设置无关,最保险了。
------解决思路----------------------
SqlCommand cmd = new SqlCommand("INSERT INTO user(name,birthday) VALUES(@name,@birthday)", cn);

cmd.Parameters.Add ("@name", "张三");
cmd.Parameters.Add ("@birthday", DateTime.Parse("2000-01-01"));

cmd.ExecuteNonQuery();


------解决思路----------------------
那只眼睛看到有存储过程了!这就是标准的写法。
------解决思路----------------------
将默认值设为:getdate()
insert into test values(default)
------解决思路----------------------
A)你不会把默认值写成字符串 'getdate()' 了吧?
B)这个 test 表只有一个字段?
  相关解决方案