2012-12-12 101 views
2

我想永久改變DATEFIRST(這是用於功能,如DATEPART)值設置DATEFIRST永久

如果我這樣做:執行它在SET DATEFIRST 1價值住宿返回默認值 - 7這裏 - 執行後

我已經有問題了,我知道它與登錄的國家有關,但我忘記了哪個表&哪些屬性我必須改變。

+0

使用ALTER LOGIN設置登錄(S)的語言,通過@MartinSmith在評論 – stuartd

+0

建議,但我沒有看到任何其他的評論...... – Giu

+0

(註釋是對我的答案被刪除) – stuartd

回答

1

我必須說這對我來說有些研究。看看下面的查詢。你會注意到datefirst字段。我可以想象,在這個級別的語言環境中會有各種各樣的權限含義。

SELECT 
    * 
FROM 
    sys.syslanguages 

我沒有一臺服務器,我可以在目前這個測試上,但我會通過你可以設置任何你希望它是DATEFIRST列一組語句想象。

測試測試測試,因爲這會對您要解決的問題產生巨大影響。

Interesting Resource # 1

Interesting Resource # 2

Interesting Resource # 3

1

您可以更改身份驗證使用Microsoft SQL Server Management Studio或執行下面的示例T-SQL Server上的SQL登錄名或Windows用戶的默認語言SQL腳本:

USE [master] 
GO 
ALTER LOGIN [login] WITH DEFAULT_LANGUAGE = [you_language] 
GO 

The script was taken from this site

0

或許有點遲到了,但這裏有一個方法來「破解」,而不管DATEFIRST值,設置任何服務器,數據庫,登錄或會話和參數化(WOW,使用了前所未有的這個詞)到第一天你真的想要它:

declare 
/* 
Let's say for a regular, boring day of Monday 
, regarldess of the datefirst value, I want it to return Monday as 1 (first day of week) 
*/ 
@ForDate datetime = '20170320', 
-- you can play with any value here 
@SetDateFirstValue int = 5 

--this is only for testing 
set datefirst @SetDateFirstValue; 

select 
    datepart(dw,@ForDate) as ActualReturnedDayOfWeek 
, datepart(dw,dateadd(dd, @@DATEFIRST - 1,@ForDate)) As IWantItThisWay 

PS :也許你唯一需要的情況是函數或約束(計算列可能),其中SET操作是不允許的。如果允許SET,則根據需要進行設置並忘記它。