0

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

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

这最初失败:错误消息是

消息 242,级别 16,状态 3,第 39 行
将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围。

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

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 始终使用英国日期格式?

4

1 回答 1

1

你总是可以使用这样的东西:

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

103 表示格式,如此处所述

于 2018-04-26T09:30:59.027 回答