У меня есть запрос, который считает даты свадьбы участников в базе данных.
SELECT
SUM(NumberOfBrides) AS [Wedding Count]
, DATEPART( wk, WeddingDate) AS [Week Number]
, DATEPART( year, WeddingDate) AS [Year]
FROM MemberWeddingDates
GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate)
ORDER BY SUM(NumberOfBrides) DESC
Как мне определить, когда начало и конец каждой недели представлены в наборе результатов?
SELECT
SUM(NumberOfBrides) AS [Wedding Count]
, DATEPART(wk, WeddingDate) AS [Week Number]
, DATEPART(year, WeddingDate) AS [Year]
, ??? AS WeekStart
, ??? AS WeekEnd
FROM MemberWeddingDates
GROUP BY DATEPART(year, WeddingDate), DATEPART(wk, WeddingDate)
ORDER BY SUM(NumberOfBrides) DESC
sql
sql-server
date
sql-server-2005
week-number
Digiguru
источник
источник
DATEFIRST
любого значения, кроме 7, нарушает это.Вот
DATEFIRST
независимое решение:источник
вы также можете использовать это:
источник
Расширение ответа @Tomalak . Формула работает для других дней, кроме воскресенья и понедельника, но вам нужно использовать другие значения для 5. Способ получить необходимую вам ценность - это
вот ссылка на документ: https://msdn.microsoft.com/en-us/library/ms181598.aspx
А вот таблица, в которой все это изложено.
Но вам не нужно запоминать эту таблицу и только формулу, и на самом деле вы также можете использовать немного другую, основная необходимость - использовать значение, которое сделает остаток правильным количеством дней.
Вот рабочий пример:
Этот метод не зависит от
DATEFIRST
Параметра, который мне нужен, поскольку я создаю измерение даты с включенными несколькими недельными методами.источник
Вот еще одна версия. Если в вашем сценарии суббота должна быть первым днем недели, а пятница - последним днем недели, приведенный ниже код будет обрабатывать это:
источник
Запрос ниже предоставит данные между началом и концом текущей недели, начиная с воскресенья по субботу.
источник
Разобьем задачу на две части:
1) Определите день недели
В
DATEPART(dw, ...)
возвращает число, 1 ... 7, относительноDATEFIRST
установки ( документы ). В следующей таблице приведены возможные значения:Последний столбец содержит идеальное значение дня недели для недель с понедельника по воскресенье *. Просто взглянув на график, мы приходим к следующему уравнению:
2) Рассчитайте понедельник и воскресенье для заданной даты
Это тривиально благодаря значению дня недели. Вот пример:
Вывод:
* Для недель с воскресенья по субботу вам нужно немного изменить уравнение, например, добавить где-нибудь 1.
источник
Если воскресенье считается днем начала недели, то вот код
источник
Я просто сталкиваюсь с подобным случаем с этим, но решение здесь, похоже, мне не помогает. Так что я пытаюсь разобраться самостоятельно. Я определяю только дату начала недели, дата окончания недели должна иметь аналогичную логику.
источник
Ответ, получивший наибольшее количество голосов, работает нормально, за исключением первой и последней недели года. Например, если значение WeddingDate равно «2016-01-01», результатом будет 2015-12-27 и 2016-01-02 , но правильный ответ - 2016-01-01 и 2016-01-02 .
Попробуй это:
Результат выглядит так:
Работает все недели, 1-я или другие.
источник
Дата начала и окончания недели с даты для формулы Power BI Dax
источник
Это мое решение
источник
Получить дату начала и дату окончания по произвольной дате
источник
У меня есть способ другой, это выберите день начала и день конца недели Текущий:
источник
Другой способ сделать это:
Пояснение:
select datediff(week, 0, @wedding_date) as week_number
dateadd(week, @week_number, @end_weekday)
: добавляет заданное количество недель и заданное количество дней к начальной календарной дате ' 1900-01-01 'источник
Это не от меня, но он выполнил свою работу, несмотря ни на что:
Я нашел это здесь .
источник
Не уверен, насколько это полезно, но я оказался здесь, когда искал решение для Netezza SQL, и не смог найти его при переполнении стека.
Для IBM netezza вы должны использовать что-то (для начала недели, понедельника, воскресенья), например:
выберите next_day (WeddingDate, 'SUN') -6 как WeekStart,
next_day (WeddingDate, 'SUN') как WeekEnd
источник
для запросов доступа вы можете использовать в формате ниже в качестве поля
прямой расчет разрешен ..
источник