小编Nir*_*ava的帖子

带有 French_CI_AS 排序规则日期转换的 SQL Server

我有一个使用French_CI_AS排序规则的 SQL Server 法语安装。出于遗留原因,表列将数据存储VARCHAR为稍后转换为正确类型的数据,类似于 C++ 中的变体。

此列中的两行数据如下:

2020-10-12 22:54:40

2020-10-13 04:42:10
Run Code Online (Sandbox Code Playgroud)

DATETIME使用默认选项转换为时,第二个日期失败。该应用程序使用 ODBC 转义序列。SQL 等COLMVALUE >= {ts'2020-01-01 00:00:00'}失败并显示错误:

La Conversion d'un type de données nvarchar en type de données datetime a créé une valeur hors limites

我做了一个DBCC useroptions ,服务器的日期格式设置为dmy. 为什么第 2 行失败?看起来它试图将“13”解释为月份。如果格式是dmy,两个日期不应该都失败吗?

此外,有趣的是,在此服务器上,以下失败:

2020-10-12 22:54:40

2020-10-13 04:42:10
Run Code Online (Sandbox Code Playgroud)

但这有效:

DECLARE @datevar DATETIME = '2020-10-13 04:42:10';    
SELECT @datevar;  
Run Code Online (Sandbox Code Playgroud)

我知道这DATETIME2DATETIME. 但是,这里的两者似乎连解析都不一样。

collation type-conversion datetime localization sql-server-2016

4
推荐指数
1
解决办法
413
查看次数