-1

重複の可能性:
MS SQL Server 2005の日付から週番号を取得しますか?

(私はイタリアにいます)すべての週がで始まり、Mondayで終わると仮定してくださいSunday

number of the weekを参照して決定するスカラー値関数を書きたいGETDATE()

何卒よろしくお願い申し上げます。

これに注意してください:SELECTはSETDATEFIRSTコマンドから独立している必要があります!!

4

4 に答える 4

3

2つのライナーを使用できますか?

  SET DATEFIRST 1;
  SELECT DATEPART( WEEK , GETDATE())

今日のために

SELECT DATEPART( WEEK , GETDATE())

30を返しますが

SET DATEFIRST 1;
SELECT DATEPART( WEEK , GETDATE()) 

31を返します

テストされていないが、この質問に基づいて編集すると、次のselectステートメントでSQL Server 2008と同等のものを取得できますdatepart(iso_week, getdate())(これはあなたが望むものだと私は信じています)

SELECT ISOWeek = (DATEPART(DY, Th) - 1) / 7 + 1
FROM (SELECT Th = DATEADD(D, 3 - (DATEPART(DW, getdate()) + @@DATEFIRST - 2) % 7, getdate())) s
于 2012-07-27T16:18:50.073 に答える
1

これが、必要なことを実行するための小さなスニペットです。

DECLARE @firstOfYear DATETIME
SET @firstOfYear = STR(Year(GETDATE()), 4)+'-01-01 00:00:00'
SELECT DATEDIFF(ww, @firstOfYear - ((DATEPART(dw, @firstOfYear) + 5) % 7), GETDATE())

週の開始を別の日に設定する場合は、+5をに基づいた値に変更するだけであることに注意して7 - dwください。これはMSSQL用です。

これは、年の最初の日を取得し、その日またはそれ以前の開始週の日を見つけることによって機能します。次に、渡された日付からその「最初の」週の開始までの週数を取得します。任意の日付の受け渡しを許可する場合は、すべてのGETDATE呼び出しをパラメーターに置き換えるだけで、準備は完了です。単一のselectステートメントが必要な場合:

SELECT 
    DATEDIFF(ww, day1 - ((DATEPART(dw, day1) +5) % 7), GETDATE()) 
FROM 
    (SELECT CAST(STR(Year(GETDATE()), 4)+'-01-01 00:00:00' AS DATETIME) day1) d
于 2012-07-27T17:01:40.363 に答える
0
select datepart(week,getdate())

詳細については、http://msdn.microsoft.com/en-us/library/aa258265(v = sql.80).aspxをご覧ください。

于 2012-07-27T16:18:35.140 に答える
0
declare @oldDF int
set @oldDF = @@DATEFIRST

set DATEFIRST 1
select DATEPART(WEEK, GETDATE())

set DATEFIRST @oldDF
于 2012-07-27T16:27:24.823 に答える