我想永久改變DATEFIRST(這是用於功能,如DATEPART)值設置DATEFIRST永久
如果我這樣做:執行但它在SET DATEFIRST 1
價值住宿返回默認值 - 7這裏 - 執行後
我已經有問題了,我知道它與登錄的國家有關,但我忘記了哪個表&哪些屬性我必須改變。
我想永久改變DATEFIRST(這是用於功能,如DATEPART)值設置DATEFIRST永久
如果我這樣做:執行但它在SET DATEFIRST 1
價值住宿返回默認值 - 7這裏 - 執行後
我已經有問題了,我知道它與登錄的國家有關,但我忘記了哪個表&哪些屬性我必須改變。
我必須說這對我來說有些研究。看看下面的查詢。你會注意到datefirst字段。我可以想象,在這個級別的語言環境中會有各種各樣的權限含義。
SELECT
*
FROM
sys.syslanguages
我沒有一臺服務器,我可以在目前這個測試上,但我會通過你可以設置任何你希望它是DATEFIRST列一組語句想象。
測試測試測試,因爲這會對您要解決的問題產生巨大影響。
您可以更改身份驗證使用Microsoft SQL Server Management Studio或執行下面的示例T-SQL Server上的SQL登錄名或Windows用戶的默認語言SQL腳本:
USE [master]
GO
ALTER LOGIN [login] WITH DEFAULT_LANGUAGE = [you_language]
GO
或許有點遲到了,但這裏有一個方法來「破解」,而不管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
,則根據需要進行設置並忘記它。
使用ALTER LOGIN設置登錄(S)的語言,通過@MartinSmith在評論 – stuartd
建議,但我沒有看到任何其他的評論...... – Giu
(註釋是對我的答案被刪除) – stuartd