Я пытаюсь рассчитать прошлый год, начиная день «текущей недели NOW()» и конечный день этой недели. Наряду с этим мне нужно компенсировать, поскольку иногда стартовый день недели может быть не в воскресенье или в понедельник, а даже в четверг.Расчет последних лет Текущая неделя Начальная дата и конечная дата
Если неделя начинается во вторник, например, она закончится в понедельник. Учитывая это, если текущий день - четверг, я должен уметь вычислять вторник и понедельник.
Я понимаю, как получить последние годы текущего дня.
SELECT DATE_SUB(NOW(), INTERVAL 1 YEAR);
Но с требованием компенсации здесь у меня возникли проблемы с расчетом начального дня той недели и дня окончания этой недели. Который должен быть в формате даты.
* Работа разъяснить это более ... Мой пример был выключен ...
*** Редактировать
Ради аргумента (и пример), скажем, что сегодня Ян 23, 2012. Моя задача - принять эту дату и вернуть даты начала и окончания на эту неделю предыдущего года.
Мои предположения:
1) a week is defined as having a thursday (ie 2011 week 1 is 1/2 - 1/8)
2) start of week is Sunday
Согласно схеме нумерации недели, как я понимаю это с вышеприведенными предположениями, неделя 1 является первой неделе с четверга. Это означает, что 23 января приходится на неделю 4 в 2012 году. Это подтверждается WEEK('2012-01-04') = 4
. Таким образом, моя цель - выбрать начальную и конечную даты 4-й недели предыдущего года. В 2011 году результаты составят 23 января - 29 января.
Далее необходимо усложнить настройку начала недели (изменение предположения 2). Продолжайте использовать WK4 ... 2011, 23 января - 29 января, Sun - Sat, если я скажу, что начало недели - понедельник, то я бы корректировал даты на один ... давая 24 января - 30 января. на 2 ... 25 января - 31 января и т.д.
подход состоит из двух шагов: 1) вычислить начало и конец правда года неделя 2) вставьте его в «будущее» любым начальный день будет
Хотя скольжение в будущее может быть или не быть правильным, оно, по крайней мере, даст последовательные результаты, основанные на общепринятом понимании того, что означает «неделя 4».
К сожалению, PHP не обязательно является вариантом здесь. Нам нужно, чтобы это выполнялось внутри SELECT START_WEEK, END_WEEK;
Любой совет или помощь в решении этого вопроса будет очень полезен.
Благодаря
Привет, действительно непонятно, что вы ищете здесь. Не могли бы вы объяснить, что вы подразумеваете под разными неделями, имеющими разные стартовые дни? Кроме того, приведу несколько примеров. Например, если сегодняшняя дата 2012-01-25, что должен вернуть запрос? –
Я также недостаточно уверен, чтобы дать ответ, хотя из того, что я могу сказать, может быть лучше использовать PHP (или любой другой язык, который вы используете), чтобы рассчитать даты для запроса MySQL. – mrlee