相关疑难解决方法(0)

哪些日期/时间文字格式是 LANGUAGE 和 DATEFORMAT 安全的?

这是很容易证明,许多日期/时间格式比下面的两个很容易受到由于设置语言,SET DATEFORMAT,或登录的默认语言误解:

yyyyMMdd                 -- unseparated, date only
yyyy-MM-ddThh:mm:ss.fff  -- date dash separated, date/time separated by T 
Run Code Online (Sandbox Code Playgroud)

即使这种没有 T 的格式也可能看起来像一个有效的 ISO 8601 格式,但它在多种语言中都失败了:

DECLARE @d varchar(32) = '2017-03-13 23:22:21.020';

SET LANGUAGE Deutsch;
SELECT CONVERT(datetime, @d);

SET LANGUAGE Français;
SELECT CONVERT(datetime, @d);
Run Code Online (Sandbox Code Playgroud)

结果:

Die Spracheneinstellung wurde auf Deutsch geändert。

Msg 242, Level 16, State 3
Bei der Konvertierung eines varchar-Datentyps in einen datetime-Datentyp liegt der Wert außerhalb des gültigen Bereichs。

Le paramètre de langue est passé à Français。 …

sql-server t-sql date-format datetime string-representation

24
推荐指数
1
解决办法
6164
查看次数