我有一个使用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)
我知道这DATETIME2
比DATETIME
. 但是,这里的两者似乎连解析都不一样。
collation type-conversion datetime localization sql-server-2016