2017-08-14 85 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

相关问题