我有以下查询,给出一个错误:将char数据类型转换为datetime数据类型导致超出范围的datetime值。
INSERT INTO ACCount(DocumentNo,AccNo,DueDate,[Description],DC,Amount,Amount1, Amount2,DateCreated,DateModified,[Type])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')
无法确切知道错误到底是什么。
我怎么解决这个问题?
提前致谢。
答案 0 :(得分:2)
'14 / 12/2012'是大多数服务器上第14个月的第12天。您必须使用正确的格式规范来表示日期,或者更好(但仅限于应用程序代码):仅使用调用代码中日期的自然表示将其作为参数传递(然后永远不会有任何字符串表示,所以它永远不会模棱两可。)
使服务器和人类读者非常明确的另一种方法是:
'14 Dec 2012 12:00:00 AM'
答案 1 :(得分: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
(这是一种明确的日期格式)