误差数据类型为nvarchar转换成日期时间(Error converting data type

2019-06-26 13:26发布

我有以下程序界面:

Create procedure [dbo].[InsertItemDetails]
    @TimeItemAdded datetime

当我打电话这样说:

EXEC [dbo].[InsertItemDetails]
     @TimeItemAdded = N'20/07/2012 00:00:00';

我得到这个错误:

消息8114,级别16,状态5
误差数据类型为nvarchar转换成日期时间。

Answer 1:

根据您的区域设置,您传递在参数@TimeItemAdded可能无法被识别。

你应该通过的日期作为:

20120720


Answer 2:

使用明确的字符串字面量为你的约会。 在这种情况下:

EXEC dbo.InsertItemDetails
    ...
    , @TimeItemAdded = '20120720';

更重要的是,一定要通过一个强类型的参数,你知道的日期是正确的。 理想情况下,不应该呈现为任何格式的字符串。

区域格式,如M / d / y是坏消息,因为你不能保证他们将工作给用户的会话,日期格式,语言设置,机器上的区域设置,等等。



Answer 3:

此链接了所有的日期时间格式,其conntries http://www.sql-server-helper.com/tips/date-formats.aspx

你可以在把它作为一个varchar和明确使用了正确的日期格式的代码转换为datetime。 例如:

SELECT CONVERT(DATETIME, '20/07/2012 00:00:00', 103)

103是您正在寻找的日期时间代码。



Answer 4:

SQL读您的日期7/20/2012这是无效的,你可以通过你的约会对象更安全的格式yyyy-MM-dd比如: 2012-07-20



文章来源: Error converting data type nvarchar to datetime