sql server语言 - 如何根据系统文化在sql中转换日期



目前我正在使用下面提到的代码

CONVERT(DATETIME, "16-05-2015 21:27:25.280",105)

使用它在我的系统文化和我们在英国的一个客户工作。但是在我们的美国客户那里遇到了问题。

错误信息:

将nvarchar数据类型转换为日期时间数据类型导致值超出范围

因此,有任何方法将字符串转换为DATETIME取决于系统文化,如。net。

Thanks in advance

Thejus tv

各种设置(语言,日期格式)只影响DateTime在SQL Server Management Studio中显示给您的方式-或者当您尝试将字符串转换为DateTime时如何解析它。

SQL Server支持许多格式-参见MSDN在线图书CASTCONVERT。这些格式中的大多数都是依赖于您所拥有的设置-因此,这些设置有时可能有效-有时则无效。

解决这个问题的方法是使用SQL Server支持的(稍作调整的)ISO-8601日期格式 -无论你的SQL Server语言和日期格式设置如何,该格式总是。SQL Server支持的ISO-8601格式有两种:
  • YYYYMMDD仅用于日期(没有时间部分);注意:没有破折号!,这非常重要!YYYY-MM-DDNOT独立于您的SQL Server中的日期格式设置,并将NOT在所有情况下工作!

或:

  • YYYY-MM-DDTHH:MM:SS用于日期和时间-注意这里:此格式破折号(但可以省略),以及固定的T作为DATETIME的日期和时间部分之间的分隔符。

此参数适用于SQL Server 2000及更新版本。

如果你使用SQL Server 2008或更新的DATE数据类型(只有DATE - 而不是 DATETIME !),那么你确实也可以使用YYYY-MM-DD格式,这也将工作,在你的SQL Server中的任何设置。

不要问我为什么整个话题如此棘手和令人困惑-这就是它的方式。但是使用YYYYMMDD格式,您应该可以适用于任何版本的SQL Server以及SQL Server中的任何语言和日期格式设置。

对于SQL Server 2008及更新版本,如果你只需要日期部分,建议使用DATE;如果你同时需要日期和时间,建议使用DATETIME2(n)。如果可能的话,您应该尝试开始逐步淘汰DATETIME数据类型

相关内容

  • 没有找到相关文章

最新更新