我有以下程序界面:
Create procedure [dbo].[InsertItemDetails]
@TimeItemAdded datetime
当我打电话这样说:
EXEC [dbo].[InsertItemDetails]
@TimeItemAdded = N'20/07/2012 00:00:00';
我得到这个错误:
消息8114,级别16,状态5
误差数据类型为nvarchar转换成日期时间。
我有以下程序界面:
Create procedure [dbo].[InsertItemDetails]
@TimeItemAdded datetime
当我打电话这样说:
EXEC [dbo].[InsertItemDetails]
@TimeItemAdded = N'20/07/2012 00:00:00';
我得到这个错误:
消息8114,级别16,状态5
误差数据类型为nvarchar转换成日期时间。
根据您的区域设置,您传递在参数@TimeItemAdded
可能无法被识别。
你应该通过的日期作为:
20120720
使用明确的字符串字面量为你的约会。 在这种情况下:
EXEC dbo.InsertItemDetails
...
, @TimeItemAdded = '20120720';
更重要的是,一定要通过一个强类型的参数,你知道的日期是正确的。 理想情况下,不应该呈现为任何格式的字符串。
区域格式,如M / d / y是坏消息,因为你不能保证他们将工作给用户的会话,日期格式,语言设置,机器上的区域设置,等等。
此链接了所有的日期时间格式,其conntries http://www.sql-server-helper.com/tips/date-formats.aspx
你可以在把它作为一个varchar和明确使用了正确的日期格式的代码转换为datetime。 例如:
SELECT CONVERT(DATETIME, '20/07/2012 00:00:00', 103)
103是您正在寻找的日期时间代码。
SQL读您的日期7/20/2012
这是无效的,你可以通过你的约会对象更安全的格式yyyy-MM-dd
比如: 2012-07-20