更改SQL Server中单个数据库的默认日期时间格式

Oma*_*eji 20 sql-server datetime

我需要在SQL服务器计算机上的单个数据库上将日期格式从US(mm/dd/YYYY)更改为UK(dd/mm/YYYY).

如何才能做到这一点?

我已经看到为整个系统执行此操作的语句,以及为会话执行此操作的语句,但我现在无法更改代码,因为它必须再次通过QA,因此我需要快速修复以更改日期时间格式.

更新

我意识到日期时间与SQL Server如何存储数据无关,但它与解析查询的方式有很大关系.

我正在将XML文件中的原始数据放入数据库中.XML文件中的日期采用英国日期格式.

kri*_*tof 22

您可以使用SET DATEFORMAT,就像在此示例中一样

declare @dates table (orig varchar(50) ,parsed datetime)

SET DATEFORMAT ydm;

insert into @dates
select '2008-09-01','2008-09-01'

SET DATEFORMAT ymd;
insert into @dates
select '2008-09-01','2008-09-01'

select * from @dates
Run Code Online (Sandbox Code Playgroud)

解析XML数据时,需要在代码中指定dateformat

  • 这会更改SESSION日期格式,而不是DATABASE. (15认同)

Phi*_*ier 11

为了避免处理这些非常无聊的问题,我建议您始终使用标准且唯一的SQL/ISO日期格式 YYYY-MM-DD 来解析数据.无论主服务器或查询客户端上的日期参数是什么(本地日期设置可能与主服务器设置不同),您的查询将在国际范围内工作!

  • Philippe - 我也确信这一点,直到有人向我展示了SQL Server 2008中的一个例子,当时指定为2008-09-01的日期被翻译为2008年1月9日,当时该地区设置为美国. (6认同)
  • 以独立于SQL服务器中的语言环境设置的格式编写日期的正确方法是"YYYYMMDD"(不是"YYYY-MM-DD"),请参阅[KB173907](http://support.microsoft.com/kb/173907 )(引用:*一个可能的解决方案是使用ISO标准格式将日期时间数据发送到SQL Server,即"YYYYMMDD"(无分隔符).*) (4认同)
  • 不幸的是,我不是在消耗数据。 (2认同)

Nic*_*rdi 5

您只能更改整个服务器上的语言,而不能更改单个数据库的语言。但是,如果您需要支持英国,您可以在所有输入和输出之前运行以下命令:

set language 'british english'
Run Code Online (Sandbox Code Playgroud)

或者,如果您在从应用程序输入数据时间时遇到问题,您可能需要考虑通用输入类型,例如

2008 年 12 月 1 日


Ser*_*eyT 5

尽管您无法为单个数据库设置默认日期格式,但您可以更改用于访问该数据库的登录名的默认语言:

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British
Run Code Online (Sandbox Code Playgroud)

在某些情况下它会有所帮助。