产生这个错误的原因是在使用convert函数将给定的日期字符串转换为日期类型的时候,因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误. 如果类型是[datetime]数据类型:最大是9999年12 月31日,最小是1753年1月1日. 如果类型是[smalldatetime]数据类型:最大值是2079年6月6日,最小值是1900年1月1日. 更多的,如果给定的日期字符串是一个错误的日期,也会报出这个错误,比如说: ); -- 报错 看出问题来了嘛?11月份怎么…
这是我Excel导入的数据,准备把这个varchar(50)时间导入我的userInfo表中的出生日期字段datatime,如果你的数据正常,是可以导入的, 但是有些日期可能超出datatime的最大最小的范围,此时会出错显示 从 nvarchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值 因我的数据比较多,有些日期我也不知道是是什么情况.先过滤一下超出datatime的最大最小的范围 最后还是不行, 于是我判断了一下我的日期, select *,CAST(SUBSTRI…
System.Data.SqlClient.SqlException: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值.解决办法是: 而这位大哥提出的解决办法是把你的edmx中的ProviderManifestToken设置成2005,这样entityframework就会默认转化成datetime了.…
方法一: 使用DateTime类型的字段在作为参数传入到数据库前记得赋值,并日期要大于1753年1月1日. 方法二: 将DateTime类型的字段修改为DateTime?类型,由于可空类型的默认值都是为null,所以传入数据库就可以不用赋值,数据库中的datetime类型也支持null. 方法三: 将数据库中的datetime类型修改为datetime2类型…
见下图sql, 使用dateadd()转换时报如题错误, 原因是数据库表中存入的数据格式不正确,  数据格式不正确,  数据格式不正确,  重要的事情讲3遍!! ca.batch_no的前8位必须是日期格式yyyyMMdd, 否则会报错! 当出现如题错误时, 首先排查sql是否正确, 其次就要考虑表中数据是否正确了.…
具体的错误原因是:C#中的DateTime类型比SqlServer中的datetime范围大.SqlServer的datetime有效范围是1753年1月1日到9999年12月31日,如果超出这个范围,EF就会把datetime转换为datetime2,但在数据库的映射类型还是datetime类型,从而出现该异常. try: 把你的edmx中的ProviderManifestToken设置成2005,这样entityframework就会默认转化成datetime了. 结果不成功 try: C#…
SQL Server char,varchar,nchar,nvarchar区别 (1)       定义: char:    固定长度,存储ANSI字符,不足的补英文半角空格. nchar:   固定长度,存储Unicode字符,不足的补英文半角空格 varchar:  可变长度,存储ANSI字符,根据数据长度自动变化. nvarchar: 可变长度,存储Unicode字符,根据数据长度自动变化. nvarchar(n) :包含 n个字符的可变长度 Unicode 字符数据.n 的值必须介于…
SQL Server 2005.2008 的 datetime 最小值是:1753-01-01 00:00:00 最大值是:9999-12-31 23:59:59.997 这与 .NET 中的 DateTime.MinValue.DateTime.MaxValue 不匹配,与 System.Data.SqlTypes.SqlDateTime.MinValue.System.Data.SqlTypes.SqlDateTime.MaxValue 匹配. 其实 .NET 与 SQL Server 字段…
原文:SQL SERVER 中的smalldatetime和datetime区别 smalldatetime不能到秒. 不過它占的空間小.(4位) datetime(8位) 而且兩者的時間範圍不一樣. datetime占8字节,精度3.33毫秒,时间从1753.1.1到9999.12.31 smalldatetime占4字节,精度1分钟,时间从1900.1.1到2079.6.6    datetime Date and time data from January 1, 1753, to Dec…
正常情况下,我们使用varchar也可以存储中文字符,但是如果遇到操作系统是英文操作系统并且对中文字体的支持不全面时, 在SQL Server存储中文字符为varchar就会出现乱码(显示为??). 而且正常情况下,主机都会支持中文的环境,所以如果使用varchar来存储数据,在开发阶段是发现不了的.多数情况下,在布署的时候也不会有问题. 但是!如果布署的主机是英文操作系统,并且不支持中文环境,那问题就出来了.所有的varchar字段在存储中文的时候都会变成乱码(显示为??).而且一般情况下你不…
在Microsoft SQLServer2005及以上的版本中,对于varchar(n).nvarchar(n)和varbinary(n)有了max的扩展.可以使用如:varchar(max).nvarchar(max)和varbinary(max)的大值数据类型来存储最多2^30-1个字节的数据.这几个数据类型在行为上和较小的数据类型 varchar.nvarchar 和 varbinary 相同. 微软的说法是用这个数据类型来代替之前的text.ntext 和 image 数据类型,它们之间…
案例环境: 操作系统版本 : Windows Server 2008 R2 Standard  SP1 数据库版本   :  Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 案例介绍: 由于不能将生产环境的代码和数据贴上来,所以我构造了下面一个小案例,当然没法和生产环境的案例一致.只能是接近而已.但是足以反映问题本质就足够了. DROP TABLE ProductPrice;   GO   CREATE TABLE ProductPrice…
最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 打开SQL Server Management Studio,在相关数据库项右键属性,进入数据库属性页,选择文件组选项,添加所要的文件组    二.创建文件 数据库属性页,选择文件选项,添加文件 . 添加文件时,需要选择上一步添加的对应文件组 三.删除普通表中的聚集索引,因为分区表是以某个字段为分区…
所谓天下大事,分久必合,合久必分,对于分区表而言也一样.前面我们介绍过如何删除(合并)分区表中的一个分区,下面我们介绍一下如何为分区表添加一个分区. 为分区表添加一个分区,这种情况是时常会 发生的.比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区表添加一个分区,让它把新的数据放在新的分区里.再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放. 遇到这种情况,就必须要为分区…
所谓天下大事,分久必合,合久必分,对于分区表而言也一样.前面我们介绍过如何删除(合并)分区表中的一个分区,下面我们介绍一下如何为分区表添加一个分区. 为分区表添加一个分区,这种情况是时常会 发生的.比如,最初在数据库设计时,只预计了存放3年的数据,可是到了第4天怎么办?这样的话,我们就可以为分区表添加一个分区,让它把新的数据放在新的分区里.再比如,最初设计时,一个分区用于存放一年的数据,结果在使用的时候才发现,一年的数据太多,想将一个分区中的数据分为两个分区来存放. 遇到这种情况,就必须要为分区…
在SQL Server中对XML的再操作转换: 方法1: --生成XML SELECT * FROM [T_BAS_预算科目] FOR XML PATH --把XML转成SQL表 declare @XmlData nvarchar(max) set @XmlData = '<row 科目编码="0" 科目名称="全部" /> <row 科目编码="1" 上级编码="0" 科目名称="功能收入分类&q…
最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 打开SQL Server Management Studio,在相关数据库项右键属性,进入数据库属性页,选择文件组选项,添加所要的文件组    二.创建文件 数据库属性页,选择文件选项,添加文件 . 添加文件时,需要选择上一步添加的对应文件组 三.删除普通表中的聚集索引,因为分区表是以某个字段为分区…
工作中遇到一个问题,A表中字段(DateTime1)的数据类型为DateTime,新建了一张表B的SMALLDATETIME1字段的数据来自A表的DateTime1 但在将A表字段DateTime1导出到B表的SMALLDATETIME1字段时出现了以下错误 后经过排查发现在原来是A表DateTime1字段的值有许多是"1753-01-01 00:00:00.000",从而导致转换失败 虽然知道了是什么原因导致的,但还是不太明白为什么"1753-01-01"无法转换…
一,导入问题如图: 二,解决方法和原因: 1,经过调试发现导入获取到的日期数据被装换成1/1/10 0:00,如下图: 而将以上的数据插入数据库类型为datatime的列时会报错 2,经过去了解npoi的CellType之后发现: CellType.NUMERIC: NPOI中数字和日期都是NUMERIC类型的,则我们需要在这个类型是判断下是否是日期即可,如下代码 case CellType.NUMERIC: //NPOI中数字和日期都是NUMERIC类型的,这里对其进行判断,返回一个数值,无论…
varchar(n) 长度为 n 个字节的可变长度且非 Unicode 的字符数据.n 必须是一个介于 1 和 8,000 之间的数值.存储大小为输入数据的字节的实际长度,而不是 n 个字节.nvarchar(n)包含 n 个字符的可变长度 Unicode 字符数据.n 的值必须介于 1 与 4,000 之间.字节的存储大小是所输入字符个数的两倍.两字段分别有字段值:猫和dog那么varchar字段占2×2+3=7个字节(n)的存储空间,而nvarchar字段占5×2=10个字节(n)的存储空间…
)-- 表名 set @table_name='bqcform101' --============表结构 select 类别,表名or字段名,描述,字段类型,是否自增,允许为NULL,默认值 from ( column_id,tbs.name 表名or字段名,ds.value 描述, rn FROM sys.extended_properties ds LEFT JOIN sysobjects tbs ON ds.major_id=tbs.id and tbs.name=@table_name…
### The error occurred while setting parameters### SQL: update ERP_SCjh_zzc_pl set IF_TONGBU=1 where (IF_TONGBU=0 or IF_TONGBU is null) and djno=? and djlb=?### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 事务(进程 ID 191)与另一个进程被死锁在 锁 | 通信缓冲区…
数学函数.字符串函数.转换函数.时间日期函数 1.数学函数 ceiling()--取上限  select ceiling(oil) as 油耗上限 from car floor()--取下限 select floor(oil) as 油耗下限 from car ) as 四舍五入 from car (两个参数) select)--为保留一位小数 select abs(-10)--绝对值 select PI()--圆周率 select sqrt()--开根号 select square()--平方…
表A中id与表B中aid为一对多的关系 例如: 表A: id name a1 tom a2 lily a3 lucy 表B: id aid value b1 a1 B1 b2 a1 B2 b3 a2 B3 b4 a3 B4 b5 a2 B5 b6 a3 B6 b7 a3 B7 使用for xml path('') 和stuff合并显示多行数据到一行中   : 第一种,不使用stuff,结果如下: select id, [val]=( select [value] +',' from tb as…
oalesce 获得参数中第一个不为空的表达式. 语法:        COALESCE ( expression [ ,...n ] ) 例子:CREATE TABLE wages                /*创建表wages*/(   emp_id      tinyint    identity,   hourly_wage   decimal   NULL,   salary      decimal    NULL,   commission   decimal   NULL, …
一个很基础的插入语句: insert into table1 select col1,convert(datetime,col2),convert(datetime,col3),col4,col5 from table2 其中table1表中col2,col3是datetime类型,其他都是varchar类型,table2全部是varchar类型. table2表中全部是varchar类型,col 1 4 5都有可能是空值. 在执行时报出如下错误: 消息 242,级别 16,状态 3,第 1 行…
DateTime And DateTime2 问题: 从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值 原因: EF中model存在datetime类型的字段,如果不进行赋值,默认会生成0001-01-01 0:00:00的时间值,这个值属于datetime2类型,存储到数据库会进行报错. 解决方式: 1.将数据库中的所有的datetime类型的字段的数据类型均改为datetiem2 2.将model中的datetime类型修改为datetime? 3.存…
1. 处理 sql server 导出的 datetime 类型的字段 在进行sql server向mysql等其他数据进行迁移数据时,会发现使用sql server导出的datetime类型的结果是16进制表示的二进制的结果,类似于:CAST(0x00009E0E0095524F AS DateTime),这样形式的datetime是无法向其他数据库插入的,所以需要将这种表现形式进行转换.搜索了很久,才在在stackoverflow上找到正确的转换方法.在网上看到很多人都这个问题都不知道解决办…
原文:SQL Server系统函数:类型转换函数 1.基本的转化 SELECT CAST(2008 as varchar(4)) + ' year!' SELECT CONVERT(varchar(4),2008) + ' year!' 2. 把日期转化为文本 SELECT CONVERT(VARCHAR(30),GETDATE(),120) --年-月-日 时:分:秒(24h) SELECT CONVERT(VARCHAR(10),GETDATE(),120) --年-月-日 时:分:秒(24…
  数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为不同的类型可以节省磁盘空间和资源.   Sql Server 还能自动限制每个数据类型的取值范围,例如定义了一个类型为int的字段,如果插入数据时插入的值的大小在smallint或者tinyint范围之内, Sql Server 会自动将类型转换为smallint 或者tinyint,这样一来,在存…