假设我会在查询中执行此操作:
set DATEFIRST 1 --Monday
将明确设置星期几被视为第一个'
但是这只是这次交易的情况,还是我从这一点开始的所有查询呢? 该部分未在文档中提及。至少我在本文档docs
中找不到它我正在使用sql server 2014
重复问题中的答案有很多帮助。它解释了每个会话的价值 但是,当dotnet重新使用其池化机制的连接时,会出现另一个问题,这个设置是否存在? 我在另一个问题中找不到。
答案 0 :(得分:2)
它适用于您的会话/连接 - 只要您保持相同的连接,在其上执行的所有查询都将使用当前的DATEFIRST
设置。它比任何特定的交易或批次都要长。
但是,我通常建议您不要更改此设置。相反,如果可能的话,找到以始终有效的方式表达查询的方法,无论哪个设置生效。
例如,如果我想要一个谓词来测试特定的存储值是否是星期一,我会写一些类似的东西:
DATEPART(weekday,<ValueToTest>) = DATEPART(weekday,'20151116') --"Known Good" Monday
无论DATEFIRST
设置生效,上述内容始终有效。
答案 1 :(得分:0)
足够容易测试。设置set DATEFIRST n
仅适用于当前会话,只需要声明一次。现在进行测试。