Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server需要不同的日期格式_Sql Server_Asp Classic_Localization - Fatal编程技术网

Sql server SQL Server需要不同的日期格式

Sql server SQL Server需要不同的日期格式,sql-server,asp-classic,localization,Sql Server,Asp Classic,Localization,我已将SQL Server的默认语言设置为“英国”。以下正确返回23 sp_configure 'default language' 我还设置了我的登录语言为“英国”太与 sp_defaultlanguage @loginame = 'Login123', @language = 'British' 然而,当我试图从ASP Classic中将13/12/2015指定为DateTime存储过程参数时,我得到 将数据类型nvarchar转换为datetime时出错 从ManagementStu

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

sp_configure 'default language'
我还设置了我的登录语言为“英国”太与

 sp_defaultlanguage @loginame = 'Login123', @language = 'British'
然而,当我试图从ASP Classic中将
13/12/2015
指定为DateTime存储过程参数时,我得到

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

从ManagementStudio,使用正确的登录名,它可以工作

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

编辑:

它不是连接字符串。在发送到数据库之前,日期的格式被错误地转换。我可以从分析器中看到这一点。

与样式一起使用:

英国/法国

103=日/月/年


另一种方法是使用与区域性无关的日期文字:

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

yyyy-mm-ddThh:mm:ss[.mmm]


事实上,我已经意识到我所做的一切都是有效的,除了从我的应用程序。也许IIS正在超越一些东西。“IANWAWBORTY考虑使用ISO8601,你的生活会更容易。我继承了一个旧的,大型ASP经典项目。”据我所知,这应该行得通。你有更完整的例子吗?我已经更新了这个问题。ASP classic是否使用相同的用户名登录服务器?它也可能受到IIS中的语言设置的影响,据我所知……我已将IIS中的LCID设置为2057。例如,“Date()”的格式正确。如果我禁用登录,它将根本不允许我登录。因此,它必须使用正确的登录名。
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;
EXEC [dbo].[my_stored_procedure] '2015-12-13T00:00:00'