Sql Server语言设置 - 保留视图中的英国日期设置

时间:2018-04-26 09:25:14

标签: sql-server tsql sql-server-2016-express

我正在尝试将字符串日期/时间从现有数据转换为T-SQL DATETIME类型。字符串采用英国格式'dd / MM / yyyy HH:mm:ss'

CREATE VIEW v_DateFix
AS
   SELECT CAST([Start Date Local] AS DATETIME) AS StartDate
   FROM MyTable
GO    

这最初失败:错误消息是

  

Msg 242,Level 16,State 3,Line 39
  将nvarchar数据类型转换为日期时间数据类型会导致超出范围的值。

所以我重新配置了语言设置

select * 
from sys.syslanguages 
where name = 'British'

-- Set default language to British 
EXEC sp_configure 'default language', 23;
GO

RECONFIGURE;
GO

创建视图仍然会抛出相同的错误。我尝试在master上配置默认语言,然后重新启动服务器。视图仍然无法创建。

我可以在CREATE VIEW声明

之前使用此声明
SET LANGUAGE BRITISH;

现在可以创建视图了。但是,重新启动服务器甚至打开新的查询窗口并从视图中进行选择仍然会出错。我不能将SET LANGUAGE语句包含在视图中。

那么如何让SQL Server Express V 14.0.1000始终使用英国日期格式?

1 个答案:

答案 0 :(得分:1)

您可以随时使用以下内容:

SELECT CONVERT(DATETIME, '01/06/2018 09:30:15', 103)

103表示格式,如here

所述