我有周数和年份,我需要在我的ssrs报告的行中显示“mm / dd / yy总计为mm / dd / yy。我的周从星期一开始。例如,如果我的周数是'2'和年份是'2010'然后我必须在我的ssrs专栏中显示“2010年4月1日至2010年10月1日的总数”。怎么做?
答案 0 :(得分:0)
SQL Server有一个DATEPART函数,用于计算一年的序数周数。但是,您必须在此之前调用DATEFIRST来定义一周中的哪一天代表一周的开始。在你的情况下,你已经声明你的一周的开始是星期一(即1)。
repNumObject = document.querySelector("input[type='radio']:checked");
答案 1 :(得分:0)
试试这个
declare @year char(4) = '2010'
declare @week int = 2
declare @fromdate datetime
declare @todate datetime
set @fromdate = DATEADD(wk, DATEDIFF(wk, 6, '1/1/' + @year) + (@week-1), 7);
set @todate = DATEADD(wk, DATEDIFF(wk, 5, '1/1/' + @year) + (@week-1), 6) ;
;WITH dates AS
(
SELECT CONVERT(datetime,@fromDate) as Date
UNION ALL
SELECT DATEADD(d,1,[Date])
FROM dates
WHERE DATE < @toDate
)
select * from dates
答案 2 :(得分:0)
您的描述不是美国标准,也不是isoweek。似乎是这些的混合。我从来没有听说过这是一个标准。这几乎是isoweek。这就是答案的基础。
计算iso年份有点棘手,你可以阅读here:
这是您需要的语法:
DECLARE @year int = 2010
DECLARE @week int = 2
;WITH CTE AS
(
SELECT
dateadd(wk, datediff(wk, - @week * 7,
cast(cast(@year as char(4)) as datetime) - 5), 0) startofweek
)
SELECT
replace('total for ' + convert(char(10), startofweek, 110)
+ ' to ' + convert(char(10), dateadd(day, 6, startofweek) , 110), '-', '/')
FROM CTE
结果:
total for 01/11/2010 to 01/17/2010
2010年Isoweek 2是2010-01-11
答案 3 :(得分:0)
尝试设置DATEFIRST(https://msdn.microsoft.com/en-ie/library/ms181598.aspx)
SET DATEFIRST 7
declare @wk int
declare @yr int
declare @EndOfWeek as datetime
set @wk = 2
set @yr = 2010
SET @EndOfWeek = dateadd (week, @wk, dateadd (year, @yr-1900, 0)) + 1 - datepart(dw, dateadd (week, @wk, dateadd (year, @yr-1900, 0)) )
SELECT
replace('total for ' + convert(char(10), dateadd(day, -6, @EndOfWeek) , 110)
+ ' to ' + convert(char(10), @EndOfWeek, 110), '-', '/')
结果:
total for 01/04/2010 to 01/10/2010
答案 4 :(得分:-1)
我希望它有所帮助:
declare @year char(4) = '2014'
declare @week int = 2
select dateadd(week,@week,convert(date,@year+'-01-01',121))
从此list
更改适合您的日期格式