2012-12-14 124 views
1

我有下面的查询,给出了一个错误,即将char数据类型转换为datetime数据类型导致超出范围的日期时间值。char数据类型转换为日期时间数据类型导致超出日期时间值

INSERT INTO帐户(DocumentNo,ACCNO,交货期,[说明],DC,金额,Amount1, AMOUNT2,dateCreated会,DateModified,[类型])VALUES(40,6000012,'14/12/2012 12 :00:00 AM', N'',N'C',365.70,551292.750000000,365.700000000,'14/12/2012 12:00:00 AM','14/12/2012 12:00:00 AM ',N'PI')

无法知道究竟是什么错误。

我怎么解决这个问题?

在此先感谢。

回答

2

'14/12/2012'是大多数服务器上第14个月的第12天。你将不得不使用正确的格式规范来表示日期,或者更好(但只在应用程序代码中):只将它作为参数传递,在调用代码中使用日期的自然表示(然后永远不会有任何字符串代表性,所以它从不含糊)。

使得它非常明确的同时向服务器和人类读者的另一种方法是这样的:

'14 Dec 2012 12:00:00 AM' 
0

您使用的是模糊的日期时间格式,并为您的区域设置的默认值意味着它不是接受它。尝试:

INSERT INTO ACCount (DocumentNo, AccNo, DueDate, [Description], DC, Amount, 
     Amount1, Amount2, DateCreated, DateModified, [Type]) 
VALUES (40, 6000012, '2012-12-14T12:00:00 AM', N'', N'C', 365.70, 551292.750000000, 
     365.700000000, '2012-12-14T12:00:00 AM', '2012-12-14T12:00:00 AM', N'PI') 

当然,考虑到时间的组件都是午夜,你可能更愿意只使用20121214(这是一个明确的日期只有格式)

相关问题