1

特定の週番号で週のすべての日付を取得することは可能ですか?2011 年から週番号 2 を指定すると、最初の月曜日から始まるすべての曜日を取得できますか?

4

1 に答える 1

2

これはうまくいくかもしれません:

SET DATEFIRST 1
DECLARE @wk int SET @wk = 2
DECLARE @yr int SET @yr = 2011

--define start and end limits
DECLARE @todate datetime, @fromdate datetime
SELECT @fromdate = dateadd (week, @wk, dateadd (YEAR, @yr-1900, 0)) - 4 -
         datepart(dw, dateadd (week, @wk, dateadd (YEAR, @yr-1900, 0)) - 4) + 1
SELECT @todate = @fromdate + 6

;WITH DateSequence( Date ) AS
(
    SELECT @fromdate AS Date
        UNION ALL
    SELECT dateadd(DAY, 1, Date)
        FROM DateSequence
        WHERE Date < @todate
)

--select result
SELECT * FROM DateSequence OPTION (MaxRecursion 1000)

インターネットで見つかった断片にパッチを当て、次の結果を生成します。

Date
-----------------------
2011-01-10 00:00:00.000
2011-01-11 00:00:00.000
2011-01-12 00:00:00.000
2011-01-13 00:00:00.000
2011-01-14 00:00:00.000
2011-01-15 00:00:00.000
2011-01-16 00:00:00.000

ただし、それを行うためのより良い方法がある可能性が最も高いです。

于 2013-11-11T16:57:58.157 に答える