2017-08-14 86 views
0

想我會在查詢中做到這一點:什麼是DATEFIRST()函數的範圍在DOTNET應用

set DATEFIRST 1 --Monday 

,將明確設置星期幾被視爲「第一」

但是,這僅僅是這種交易的情況,還是會從這一點開始進行所有查詢?
該部分未在文檔中提及。至少docs

我使用SQL Server 2014

在欺騙問題的答案可以幫助很多我無法在本文檔中找到它。它解釋了每次會話的價值。
但是,當dotnet重新使用其連接池機制的連接時,會彈出另一個問題,此設置是否會存活?
我在其他問題中找不到那個。

+0

您的會話結束,通常一個連接將有一個會議 – TheGameiswar

+0

我的連接始終建立在using語句,但DOTNET其池機制權重用呢?所以,我不知道比DATEFIRST這個值多長時間持續的時間比 – GuidoG

+0

它的工作原理,直到您使用的Connection.close或連接cloded – TheGameiswar

回答

2

它適用於您的會話/連接 - 只要你保持相同的連接,就可以執行所有的查詢將利用當前DATEFIRST設置。它超過了任何特定的交易或批次。

但是,我通常會建議不要更改此設置。如果可能的話,不管怎樣的設置,都可以找到方式來表達你的查詢。

舉例來說,如果我想有一個謂語測試特定存儲的值是否是一個星期一,我會寫這樣的:

DATEPART(weekday,<ValueToTest>) = DATEPART(weekday,'20151116') --"Known Good" Monday 

上面總是工作,無論DATEFIRST設置是什麼有效。

0

易於測試。設置set DATEFIRST n僅適用於當前會話,只需要聲明一次。現在測試它。當您關閉connecton

相關問題