首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

数据类型 varchar 变换为 datetime 时出错

2013-08-01 
数据类型 varchar 转换为 datetime 时出错。消息 8114,级别 16,状态 1,过程 proC_College_ADD,第 0 行从数

数据类型 varchar 转换为 datetime 时出错。
消息 8114,级别 16,状态 1,过程 proC_College_ADD,第 0 行
从数据类型 varchar 转换为 datetime 时出错。
我有一个存储过程,有一个日期字段。
赋值代码

model.College_EntryTime = DateTime.Now;

代码片段
new SqlParameter("@College_EntryTime", SqlDbType.DateTime)
parameters[26].Value = model.College_EntryTime;

SQL ServerProfiler监视 这个日期值为@College_EntryTime='2013-07-19 09:37:32.6400000'
此时这样执行存储过程会报如上错误。
但是如果我把日期中.6400000删掉就执行成功!
如:@College_EntryTime='2013-07-19 09:37:32'
这是怎么回事,记得以前同样是datetime类型也不会出这样的错误呀。
求大神解答 sqlserver?数据类型?转换
[解决办法]
你自己挑要哪种格式显示
Select CONVERT(varchar(100), GETDATE(), 0)--05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1)--05/16/06
Select CONVERT(varchar(100), GETDATE(), 2)--06.05.16
Select CONVERT(varchar(100), GETDATE(), 3)--16/05/06
Select CONVERT(varchar(100), GETDATE(), 4)--16.05.06
Select CONVERT(varchar(100), GETDATE(), 5)--16-05-06
Select CONVERT(varchar(100), GETDATE(), 6)--16 05 06
Select CONVERT(varchar(100), GETDATE(), 7)--05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8)--10:57:46
Select CONVERT(varchar(100), GETDATE(), 9)--05 16 200610:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10)--05-16-06
Select CONVERT(varchar(100), GETDATE(), 11)--06/05/16
Select CONVERT(varchar(100), GETDATE(), 12)--060516
Select CONVERT(varchar(100), GETDATE(), 13)--16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14)--10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20)--2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21)--2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22)--05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23)--2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24)--10:57:47
Select CONVERT(varchar(100), GETDATE(), 25)--2006-05-16 10:57:47.250


Select CONVERT(varchar(100), GETDATE(), 100)--05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101)--05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102)--2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103)--16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104)--16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105)--16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106)--16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107)--05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108)--10:57:49
Select CONVERT(varchar(100), GETDATE(), 109)--05 16 200610:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110)--05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111)--2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112)--20060516
Select CONVERT(varchar(100), GETDATE(), 113)--16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114)--10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120)--2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121)--2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126)--2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130)--18 ???? ?????? 142710:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131)--18/04/142710:57:49:920AM


[解决办法]
格式化输出DateTime.Now

  model.College_EntryTime=DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

[解决办法]

select convert(datetime,'2013-07-19 09:37:32.640') ;
select convert(datetime2,'2013-07-19 09:37:32.6400000')

楼主把数据库中类型改为 datetime2吧。
datetime精度不够,小数点后只能有3位
[解决办法]
C#和SQL的一些类型虽然名字一样,但并不一定完全一样。
比如C# datetime 的最小日期是0001-1-1,而SQL的最小datetime是1900-1-1。
你的model.College_EntryTime 是啥类型也不知道。
不过为了应付改成:
parameters[26].Value = model.College_EntryTime.ToString("yyyy-MM-dd HH:mm:ss");
试试。
至于你说,以前能调试通过,现在不行了。估计是你的机子,升级了啥东西。。。

热点排行