SQL Server期望不同的日期格式

时间:2015-12-12 18:40:23

标签: sql-server asp-classic localization

我已将SQL Server的默认语言设置为“British”。以下正确返回23 ...

sp_configure 'default language'

我也将我的登录语言设置为“英国”......

 sp_defaultlanguage @loginame = 'Login123', @language = 'British'

但是,当我尝试从ASP Classic中指定13/12/2015作为DateTime存储过程参数时,我得到...

  

将数据类型nvarchar转换为datetime时出错。

在Management Studio中,通过正确的登录,它可以正常工作。

为什么ASP Classic会产生这种效果?我很确定它正在使用正确的连接字符串。

修改

它不是连接字符串。不知何故,日期的格式在被发送到数据库之前被错误地转换。我可以从Profiler看到这个。

1 个答案:

答案 0 :(得分:3)

使用CONVERT样式:

  

英国/法语

     

103 = dd / mm / yyyy

SELECT CONVERT(DATETIME, '13/12/2015', 103);

-- with stored procedure
DECLARE @d DATETIME = CONVERT(DATETIME, '13/12/2015', 103);

EXEC [dbo].[my_stored_procedure] @d;

<小时/> 另一种方法是使用独立于文化的ISO 8601日期文字:

  

使用ISO 8601格式的优势在于它是一种国际标准。此外,使用此格式指定的日期时间值是明确的。此外,此格式不受SET DATEFORMAT或SET LANGUAGE设置的影响。

     

YYYY-MM-DDTHH:MM:SS [.mmm]

EXEC [dbo].[my_stored_procedure] '2015-12-13T00:00:00'