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

时间:2008-12-01 14:24:45

标签: sql-server datetime

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

如何做到这一点?

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

更新

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

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

8 个答案:

答案 0 :(得分:21)

您可以使用 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

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

答案 1 :(得分:11)

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

答案 2 :(得分:4)

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

ALTER LOGIN your_login WITH DEFAULT_LANGUAGE=British

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

答案 3 :(得分:3)

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

set language 'british english'

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

  

1日 - 12月2008

答案 4 :(得分:0)

如果这确实是QA问题而您无法更改代码。在机器上设置新的服务器实例并将语言设置为“英国英语”

答案 5 :(得分:-1)

您确实知道格式与SQL Server存储日期时间无关,对吧?

您可以为每个会话使用set dateformat。没有数据库设置。

如果您使用参数进行数据插入或更新,或者使用过滤,则不会有任何问题。

答案 6 :(得分:-1)

使用:

select * from mytest
EXEC sp_rename 'mytest.eid', 'id', 'COLUMN'
alter table mytest add id int not null identity(1,1)
update mytset set eid=id
ALTER TABLE mytest DROP COLUMN eid

ALTER TABLE [dbo].[yourtablename] ADD DEFAULT (getdate()) FOR [yourfieldname]

它正在100%工作。

答案 7 :(得分:-1)

对于SQL Server 2008,运行:

EXEC sp_defaultlanguage 'username', 'british'