我已将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看到这个。
答案 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'