datefirst
的影響力
datefirst
用來確定一周中第一天是星期幾。可以通過 set datefirst
和 @@datefirst
來設定和返回其值:
值
一周的第一天是1
星期一 2
星期二 3
星期三 4
星期四 5
星期五 6
星期六
7 (預設值,美國英語)
星期日
datefirst
主要影響日期函式中涉及到星期的兩個引數: week
和 weekday
:前者通常表示指定日期是當年的第幾個星期;後者通常表示指定日期是一周中第幾天。
所有的日期函式中,只有datepart
函式受datefirst
的影響,其它函式都不受其影響。下面來詳細說說。
1.
datepart
受其影響
datepart(weekday, @dt)
返回指定日期是一周中的第幾天,注意是相對於 datefirst
為一周中第一天,這和是星期幾不是乙個概念。這也就是說,隨著 datefirst
設定不同,同一日期的上述返回值也不同。為了抵消這種影響,我們可以將 @@datefirst
新增到 @dt
上,此時呼叫 datepart
與把 datefirst
設為 7
的結果是一致的。如果你想把 datefirst
邏輯地設定為 n
,從日期減去常數 n
即可:
datepart(weekday, @dt + @@datefrst - n)
datepart(week, @dt)
返回指定日期是一年中第幾個星期。用下面這種方法表述也許能更好理解這個函式: sql server
總是將每年的 1
月 1日 所在的 week
的值總是 1
,其後每經過乙個 datefirst
就將值增加 1
。 很多查詢中要求按周分組,此時我們可以設定好 datefirst
(因為中國人習慣是星期一是一周的第一天,而 sql server
預設卻是星期日是第一天),然後呼叫 datepart(week, @dt)
分組就可以了。如果你想只是把 datefirst
邏輯地設定為 n
,那可呼叫如下:
datepart(week, @dt + @@datefrst - n)
2.
datediff
不受影響
datediff(weekday, @dt1, @dt2)
和 datediff(day, @dt1, @dt2)
返回的結果一致。
datediff(week, @dt1, @dt2)
則和datefirst
為 7
時的 datepart(week, @dt2) – datepart(week, @dt1)
一致。
3.
datename
不受影響
datename(weekday, @dt)
返回當前語言中,指定日期是星期幾的字串,比如下表分別為中(簡體中文)英( us_english
)文下的返回值(不包括引號):
簡體中文
us_english
「星期一」
「 monday
」 「星期二」
「 tuesday
」 「星期三」
「 wednesday
」 「星期四」
「 thursday
」 「星期五」
「 friday
」 「星期六」
「 saturday
」 「星期日」
「 sunday
」 datename(week, @dt)
則返回的datefirst
為 7
時的 datepart(week, @dt)
的值。
4.
dateadd
不受影響
dateadd(weekday, n, @dt)
相當於 dateadd(day, n, @dt)
dateadd(week, n, @dt)
相當於 dateadd(day, n * 7, @dt)
即 n個星期以後的日期是多少。
1 .《 microsoft sql server2005
技術內幕: t-sql
程式設計》
影響力閱讀
便宜 廉價 幾乎每一種生命形式都有它的擬態體,就連一些最低等的病原體也有一兩手模擬的看家本領。一旦這些聰明的細菌或病毒模仿一些有用的激素和營養素的重要特徵,那些健康的細胞馬上就毫不介意地 他們知道怎樣提出請求,怎樣利用身邊存在的這樣或那樣的自動影響的 來武裝自己。要這樣做,有時候僅僅意味著正確選擇乙...
J u s的影響力
鏈結 s在九人齊心協力下,影響力越來越大了!已知第一天影響力為 第二天影響力為 從第三天開始,每一天的影響力為前兩天影響力的乘積再乘以 的 次方。用數學語言描述是 設第 天的影響力為 那麼 對於 她們想知道第 天影響力是多少?由於這個數可能非常大,只需要輸出其對 取模的值就可以了。一行五個正整數 第...
《影響力》讀書隨筆
羅伯特 西奧迪尼的 影響力 講的是順從心理學。該書 通俗易懂,沒有深奧晦澀的術語,但裡面蘊含豐富的心理學知識,很值得一讀。順從心理學,顧名思義,講的是如何讓他人順從。那些順從專家們其實是利用了人們思考方式的弱點,也就是 模式化的自動行為 下面是書中關於模式化的自動行為的一段簡單介紹 模式化的自動行為...