-1

重複の可能性:
T-SQL で週番号から日付を取得する

SQL クエリに週番号がある場合、日付の値を取得するにはどうすればよいですか。

たとえば、26 を渡すと、2012 年 6 月 24 日になります。27 を渡すと、07/01/2012 になるはずです

どんな助けでも大歓迎です:)

ソッツ

4

4 に答える 4

0

これにより、週の開始日と終了日がわかります。[SQLServerの場合]

Declare @week integer set @week = 26
Declare @Year Integer Set @Year = year(getdate())
declare @date datetime

-- ------------------------------------
Set @date = DateAdd(day, 0, 
            DateAdd(month, 0, 
            DateAdd(Year, @Year-1900, 0)))

set @date = Dateadd(week, @week-1, @date)

select @date startweek, DATEADD (D, -1 * DatePart (DW, @date) + 7, @date) endweek

これはそれからの結果でした:

startweek               endweek
----------------------- -----------------------
2012-07-01 00:00:00.000 2012-07-07 00:00:00.000

(1 row(s) affected)
于 2012-06-27T02:12:38.607 に答える
0

SQL Server で

DECLARE @StartDate DATE, @WeekVal INT
SET @WeekVal = 26 -- Set the week number
SET @StartDate = DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) -- Start of current year

;WITH cte AS (
    SELECT @StartDate AS DateVal, DATEPART(wk, @StartDate) AS WeekVal, 1 AS RowVal
    UNION ALL
    SELECT DATEADD(d, 1, DateVal),  DATEPART(wk, DATEADD(d, 1, DateVal)), RowVal + 1 
    FROM cte WHERE RowVal < 365
)
SELECT MIN(DateVal) StartOfWeek
FROM cte
WHERE WeekVal = @WeekVal
OPTION (MAXRECURSION 365);
于 2012-06-26T23:00:07.003 に答える
0
SELECT DATEADD(week, n, '11/25/2011');

n は週番号です。

于 2012-06-26T23:14:28.143 に答える
0

これが機能しない場合は、WEEK()代わりに を使用してみてくださいWEEKOFYEAR()

CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY + INTERVAL (WEEKNO - WEEKOFYEAR(CURDATE())) WEEK
于 2012-06-26T23:14:57.263 に答える