私は T-SQL を初めて使用し、ここで緊急の支援が必要でした。特定の日付から週番号を取得しようとしています。
組み込み関数があることは理解していますが、値の戻り値は私が望んでいたものではありません。
たとえば、 select を使用するdatepart(wk, '2013-01-07')
と、「2」が返されますが、実際には「2」ではなく「1」が返されるはずです。
この問題を修正する方法はありますか?
私は T-SQL を初めて使用し、ここで緊急の支援が必要でした。特定の日付から週番号を取得しようとしています。
組み込み関数があることは理解していますが、値の戻り値は私が望んでいたものではありません。
たとえば、 select を使用するdatepart(wk, '2013-01-07')
と、「2」が返されますが、実際には「2」ではなく「1」が返されるはずです。
この問題を修正する方法はありますか?
dy
datepart指定子を使用してdayOfYear番号を取得し、それを 7 で割ることができます。
select (datepart(dy, '2013-01-05') - 1) / 7 + 1;
ワーキングデモ。
これは、最初の週に定義したホップによって異なります。いつも同じ平日に始まりますか?それとも常に 1 月 1 日に開始しますか? 常に同じ曜日に開始する場合は、 を使用Set datefirst
して、週の開始日として定義する曜日を T-SQL に伝えます。常に 1 月 1 日に開始したい場合は、週ではなく日を使用し、1 を引き、整数を 7 で割り、1 を足します。
declare @dat DateTime = getdate()
Select Select (datepart(dy, @dat)-1) / 7 + 1
これを試して
SELECT DATEPART(WEEK,GETDATE())