2016-10-13 10 views
0

SQL Server 2014の現在の日付に基づいて週番号を取得する方法は?週数を取得する方法SQL Server 2014

常に注意してください年2月1日と年末から始まるが、31日になります必要があります1月

週は日曜日から土曜日まで開始します。

+0

あなたは週1と2月1日で1週間たい意味するか試してみてください? – jarlh

+0

@jarlhはいplease – user2331670

+0

"week"の定義がいくつか変更されていますが、これは新しいものです。 1月ではなく、実際に2月を意味しましたか?何週目に1月の週が来るべきですか?それらは約50になるだろうか? – hvd

答えて

3

あなたは2月1日以降の週数を取得してから数週間を計算するためにそれを使用することができます

select (case when month(getdate()) < 2 
      then datediff(week, 
          datefromparts(year(getdate()) - 1, 2, 1), 
          getdate() 
         ) 
      else datediff(week, 
          datefromparts(year(getdate()), 2, 1), 
          getdate() 
         ) 
     end) 

注:datefromparts()は、SQL Server 2012で導入されたあなたが日付に文字列との変換で同様のことを行うことができます。

+0

これを実行すると、以下のエラーが表示されます。「メッセージ155、 '週間'は認識された日付オプションではありません。 – user2331670

0
declare @DATE_INSERT date='02-01-2014' 
select DATEPART(WK,@DATE_INSERT) - DATEPART(WK,DATEADD(DAY,1,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@DATE_INSERT),0)))) + 1 
0

あなたは週番号をどう定義するかによって異なりますが、あなたはこれを試すことができます。

SELECT DATEPART(wk, DATEADD('mm',-1,getdate())) 
+0

1月1日から前月の週数は、2月1日から翌月の週数と異なる場合があります。 – Serg

1

この

SELECT CASE WHEN MONTH(GETDATE()) < 2 THEN (DATEPART(DAYOFYEAR,DATEADD(M,11,GETDATE())))/7 
      ELSE ((DATEPART(DAYOFYEAR,GETDATE())-31)/7)+1 
     END 
+0

それは動作します。ありがとう。私はあなたのSQLクエリを実行して、それは週37を返します。私は前週の番号(36)したい場合は、コードは何ですか? – user2331670

+0

他にも+1がありますが、それを削除することはできますが、1週間目は0を返します –

関連する問題