2013-04-01 58 views
1

我正在尋找給我正確的函數week-number函數計算一年中的正確週數

一年的第一天應該總是在第一週。 一年的第一個星期六屬於第一週。

換句話說:here is我在找什麼,但不是在PostgreSQL,而是在sql-server

我真的想用一個函數來做,我會稍後調用。

非常感謝您的幫助。

+2

[?到底什麼,你嘗試過(http://whathaveyoutried.com) – 2013-04-01 15:24:39

+0

不要打擾寫一個函數。相反,請創建一個[日曆表](http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html)並預先填充它。這在維護和用於查詢中要簡單得多,並且還有許多其他用途。您可能還想查看關於此主題的[許多現有問題](http://stackoverflow.com/search?q=sql-server+week+number)。 – Pondlife

回答

1

在SQL Server中,不需要自定義函數;只是使用內置的DATEPART functionweek作爲第一個參數:

-- first day 
select datepart(week, '2013-01-01'); 

輸出:1

-- first Saturday 
select datepart(week, '2013-01-05'); 

輸出:1

-- first Sunday 
select datepart(week, '2013-01-06'); 

輸出:2

-- today 
select datepart(week, '2013-04-01'); 

Outpu T:14

這裏有一個現場演示:http://www.sqlfiddle.com/#!3/d41d8/11802

+0

我沒有和你一樣的輸出,例如:select datepart(week,'2013-01-06');給我1,並選擇日期部分(星期,'2013-01-07');給我2 – Houari

+0

@Houari,可能是因爲你的['DATEFIRST'(http://msdn.microsoft.com/en-us/library/ms181598.aspx)設置 – GolfWolf

+0

而wheni運行SELECT @@ DATEFIRST我的服務器上的,我得到1,但在livedemo我得到7 – Houari

0

選擇日期部分(周,GETDATE())作爲CurrentWeekofYear