【问题标题】:How to change default systemdate from ymd to dmy如何将默认系统日期从 ymd 更改为 dmy
【发布时间】:2011-05-19 06:42:49
【问题描述】:

有人可以帮我将默认系统日期从 ymd 更改为 dmy 吗?这些必须始终是默认格式!怎么样?

【问题讨论】:

  • 如果您可以避免将日期(时间)表示为字符串,请努力这样做。如果您必须使用字符串,请使用明确的格式,这样不管服务器设置是否有效。 '20110519' 是明确的。和'2011-05-19T07:50:23'一样。

标签: sql sql-server tsql sql-server-2008


【解决方案1】:

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 中列出的任何语言中进行选择。在您重新登录之前,更改不会生效。

    【讨论】:

      【解决方案3】:
      SET DATEFORMAT DMY;
      
      GO
      
      RECONFIGURE
      
      GO
      
      DBCC USEROPTIONS
      
      SELECT GETDATE()
      

      【讨论】:

        猜你喜欢
        • 2013-12-29
        • 1970-01-01
        • 2018-02-02
        • 1970-01-01
        • 1970-01-01
        • 2020-11-14
        • 2020-10-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多