У меня есть номер недели и год, и мне нужно отобразить «total for mm/dd/yy to mm/dd/yy в строке моего отчета ssrs. Моя неделя начинается с понедельника. Например, если мой номер недели равен «2», а год - «2010», тогда мне нужно отобразить «итоговые данные за 01/04/2010 по 01/10/2010 в моей колонке ssrs. как это сделать?Поиск начала недели и даты окончания недели
ответ
Попробуйте
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
прочитал вопрос, вот как я знаю –
снова проверил ваш ответ, он не возвращает правильный результат –
** ПОЖАЛУЙСТА **! a) Этот anser неверен, b) и это ужасно! declare @year char (4) '==> Давай, это худший стиль! –
Я надеюсь, что это помогает:
declare @year char(4) = '2014'
declare @week int = 2
select dateadd(week,@week,convert(date,@year+'-01-01',121))
Изменение формата даты подходящий для вас из этого list
SQL Server имеет DATEPART функцию, которая вычисляет порядковый номер недели года. Однако перед этим нужно позвонить DATEFIRST, чтобы определить, какой день недели представляет собой начало недели. В вашем случае вы заявили, что начало вашей недели - понедельник (т. Е. 1).
SET DATEFIRST 1;
SELECT SUM([your data column])
FROM [your table]
WHERE DATEPART(WEEKNUM, [your date column])=[your week parameter]
AND DATEPART(YEAR, [your date column])=[your year parameter]
Я не понимаю, почему вы получаете downvote, я проголосовал за вас. Вы используете 'datefirst' (bravo!) И' datepart' (bravo!), И не все, что дерьмовые хаки, которые другие пишут. Только он хотел видеть и начало и конец недели. этого не хватает, но это немного. –
Привет, я тоже не понял! :) – TeamTam
Ваше описание не является американским стандартом, ни isoweek. Похоже на смесь этих. Я никогда не слышал об этом как о стандарте. Это почти isoweek. Вот на что основан этот ответ.
Расчет изо год немного сложнее, вы можете прочитать об этом 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
Isoweek 2 в 2010 году is 2010-01-11
Это не то же определение, что и неделя ИСО, 01/04/2010 находится в ИСО неделя 1 :-) – dnoeth
@ Если вы правы. изменил мой код –
Попробуйте установить DATEFIRST ())
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
- 1. Расчет начала и окончания недели и месяца?
- 2. Поиск даты начала каждой недели php
- 3. получение даты начала и окончания недели, предшествующей данной дате
- 4. Получить недели начала и даты окончания от года и календарной недели с JavaScript
- 5. SQL: как получить начальную дату недели и дату окончания недели
- 6. Группа название недели, основанное на время начала и окончания
- 7. Расчет недели указанной даты
- 8. Как получить дату начала и дату окончания текущей недели?
- 9. Как получить дату начала и дату окончания недели в ИО
- 10. рассчитать номер недели с даты начала
- 11. Как получить даты начала недели и номер недели каждой недели в году, учитывая, что начальный день недели - понедельник в питоне?
- 12. Поле недели недели
- 13. Найти Дата начала/Дата окончания недели этого года/LAST
- 14. Создайте даты начала и окончания каждой недели года, начиная с любой даты с PHP
- 15. Полный календарь ограничить просмотр недели недели со временем начала и окончания
- 16. Рассчитайте дату окончания недели в оракуле, используя субботу в качестве даты окончания недели
- 17. Как рассчитать дату окончания недели в улье, используя субботу в качестве даты окончания недели?
- 18. Получить дату первого и последнего дня недели, зная номер недели
- 19. Как вы получаете «начальную дату недели» и «дату окончания недели» из номера недели в SQL Server?
- 20. Найти старт-дата окончания недели с номером недели
- 21. , чтобы получить все данные с даты начала и окончания даты
- 22. Номер недели до начала каждой недели в R
- 23. Предыдущие дни недели
- 24. Таблица недели до даты
- 25. Поиск даты для данной недели номер
- 26. Javascript получает день недели с даты
- 27. Поиск даты календаря текущего события, когда известны дата начала и дни недели
- 28. Калькулятор недели недели недели
- 29. Дата начала предыдущей и следующей недели понедельника с определенной даты
- 30. SQL, как найти все даты начала и окончания недели между два датой
Что диапазон дат недели '1'? Я предпочитаю таблицу календаря для таких задач: http://sqlserver2000.databases.aspfaq.com/why-should-i-consider-using-an-auxiliary-calendar-table.html – dnoeth
за неделю1 12/28/2009 01/03/2010 –
@AliasVarghese НЕ правильно, iso_week 1 is 2010-01-04 to 2010-01-10 –