sqlserver添加字段

从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值

ⅰ亾dé卋堺 提交于 2020-04-07 19:28:59
最近在ASP.NET MVC中遇到一个问题,如题,在使用EF数据模型的时候,要去添加一条新的数据到Sqlserver数据库,在之前项目中并没有出现该异常,所以去扒了扒demo,发现有几个字段(数据库类型为datetime)savechange的时候默认绑定了datetime.now。问题就在这里,我的新项目并没有给定这几个字段的数据。下面总结下: 触发该错误的条件如下: SQL Server数据库版本中的字段类型为datetime2 数据库中,某个要进行Add或者Edit的字段的数据类型为datetime,比如表A中的today字段,类型为datetime。而后台代码进行数据库操作时,并没有给today(datetime类型)赋值。结果就是VS2015编译的时候默认将其类型编译为datetime2,导致用EF进行add和edit操作的时候出现该异常。 解决方案: 给这些字段一个值(不管它是否在数据库设置了默认值),并且日期要大于1753年1月1日,这是最简单的方法。 将数据库类型修改为datetime?类型,也就是说允许为空。 修改数据库字段类型为datetime2类型,前提是数据库要支持该类型。 在C#中用new DateTime(year,month,day,hour,minute,second)来限制精度,原因之后会在datetime2和datetime的区别中提到。

SqlServer如何给表添加新的字段以及字段注释

拟墨画扇 提交于 2020-02-25 21:40:53
SqlServer如何给表添加新的字段以及字段注释 语法: USE 数据库名 ALTER TABLE 表名 ADD 字段名 类型 默认值 是否为空; EXEC sp_addextendedproperty N'MS_Description', N'注释内容', N'SCHEMA', N'dbo',N'TABLE', N'表名', N'COLUMN', N'字段名'; 事例: USE [mm] ALTER TABLE p_warehouse_record_in ADD freight_rate decimal(10,4); EXEC sp_addextendedproperty N'MS_Description', N'运费税率', N'SCHEMA', N'dbo',N'TABLE', N'p_warehouse_record_in', N'COLUMN', N'freight_rate'; 好记性不如烂笔头! 来源: CSDN 作者: SuperJINcn 链接: https://blog.csdn.net/qq_29002727/article/details/104494556

SqlServer修改某个字段的默认值时的操作步骤

大兔子大兔子 提交于 2019-12-05 06:53:04
sqlserver有时候需要修改一个字段的默认值,却发现修改(update)不了,也删除(delete)不了,排查发现,需要先删除原有的默认值约束,才行;步骤如下1、2、3。 若原来这个字段就没有默认值,则直接执行步骤3的sql;注意,需要 显示声明默认值约束 ,否则系统会默认生成后缀为随机字符串的约束; 不利于维护 和无法做到 见名知意 。 1,删除原有字段上的默认值约束 use [yourDBName];--数据库名 declare @tableName nvarchar(100);--表名 declare @columnName nvarchar(100);--列名 declare @cnt nvarchar(100); declare @sqlcmd nvarchar(1024); set @tableName='yourTableName' set @columnName='yourColumnName' select @cnt= b.name from sysobjects b join syscolumns a on b.id = a.cdefault where a.id = object_id(@tableName) and a.name = @columnName set @sqlcmd = 'ALTER TABLE '+ @tableName +' DROP