2011-05-19 53 views
3

有人可以帮我从YMD更改默认systemdate到DMY?这些必须始终是默认格式!怎么样?如何从YMD更改默认systemdate到DMY

+3

如果你能避免代表日期(时间)S作为字符串,努力这样做。如果你必须使用一个字符串,用一个明确的格式,这样也无所谓什么服务器设置生效。 ''20110519''是毫不含糊的。由于是''2011-05-19T07:50:23''。 – 2011-05-19 06:50:52

回答

6

SET DATEFORMAT

设置解释日期, SMALLDATETIME,DATETIME,DATETIME2和DATETIMEOFFSET 字符串,月,日,和 年的日期部分的顺序。

[注意:这通常不是解决日期解释问题的方法。日期时间不应该被存储在一个字符串,如果你能避免它(使用日期时间或日期列代替)。如果你有一个字符串形式存储,使用ISO 8601格式是YYYYMMDD形式的基本]

示例从MSDN:

-- Set date format to day/month/year. 
SET DATEFORMAT dmy; 
GO 
DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567'; 
SELECT @datevar; 
GO 
-- Result: 2008-12-31 09:01:01.123 
SET DATEFORMAT dmy; 
GO 
DECLARE @datevar datetime2 = '12/31/2008 09:01:01.1234567'; 
SELECT @datevar; 
GO 
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string. 
GO 
2

它可以设置默认的日期格式为当前登录通过更改默认语言。

对于月/日/年:

ALTER LOGIN [MyUser] WITH DEFAULT_LANGUAGE = us_english 
select CAST('01-06-2011' as datetime) 
-- 2011-01-06 00:00:00.000 

或为日/月/年:

ALTER LOGIN [MyUser] WITH DEFAULT_LANGUAGE = British 
select CAST('01-06-2011' as datetime) 
-- 2011-06-01 00:00:00.000 

您可以从任何sys.syslanguages列出的语言的选择。直到您再次登录后,更改才会生效。