![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
McDoc |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Ребята, есть небольшая замарочка.
Теория: - Каждый месяц содержит неколько одинаковых дней недель. 4 Понедельника, 4 Вторника ......и даже бывают варианты что 5 Пятниц. Соответственно разбиваю логически на: Первый (First) Второй (Second) Третий (Third) Четвертый (Fourth) Последний (Last) Понятно, что Четвертый может быть и Последним. Не вижу логческого конфликта. Если делать стандартный запрос:
То проблем ни каких не возникает. А вот проверить это Третья ли среда месяца, или Четвертый четверг, или последняя пятница месяца не получается. Подскажите как проверить какой это по счету день недели, если колонка в таблице имеет название frequency и конечно все периуды имеют названия First, Second, Third, Fourth, Last. Это сообщение отредактировал(а) McDoc - 18.6.2014, 19:20 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
DAYOFWEEK(date) WEEKDAY(date) -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
McDoc |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Спасибо, но примерно эти же команды я и расматривал. Но к сожалению не могу найти, как эти команды обчитывают (расчитывают). Плюс, программа обчитывает Слова как в месяце к примеру, или мне нужно ставить индексы (1, 2, 3 ... 5). Или как? К примеру если в месяце 4 пятницы, и я оставляю метку Червертая, она же может быть и последняя. Но как нить она может выпасть и на Пятой пятницей. Как работает алгоритм? Я хочу понять при забивке занных в таблицу. Кто знает, поясните. Это сообщение отредактировал(а) McDoc - 19.6.2014, 11:13 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Указанные функции позволят тебе получить день недели. Что же до номера недели в месяце... смотри. Если неделя начинается понедельником, достаточно тупо поделить номер дня на 7 (целочисельно, есссно), и номер недели у нас в кармане. А если не понедельником? допустим, вторником... давай добавим в первую неделю недостающий день - тогда можно спосойно делить на 7. А если среда? добавим два дня... Четверг? три... А сколько добавлять в общем случае? а надо просто узнать номер дня в неделе для первого дня месяца! Конечный алгоритм получается такой. Берём нужную дату. Отнимаем от неё (date_sub) столько дней, каков номер дня (day) этой даты - получаем день перед первым числом этого месяца. Спрашиваем, а какой это по номеру день недели (dayofweek). Полученное число добавляем (date_add) к номеру дня (day) нужной даты. И делим полученное на 7. Всё, у нас в руках номер недели. Возможно, там ещё надо будет прибавить или отнять единицу-другую - но думать лениво. Сам проверишь и определишь, надо или нет, а если надо, то что именно. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
McDoc |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Вчера убил подня на решение проблемы, но она пока не решена.
Вопрос № 1, как переодичность декларировать в таблице? First или 1 Second или 2 ..... или 3 ..... или 4 А как же декларировать Last ??? |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Никак. Это не данные, а их интертрепация на клиенте. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
McDoc |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Смотри, вот пример:
![]() Вот мы отмечаем Последний понедельник первого месяца. Но столь важно, номер месяца. Важно Последний... Понедельник. Он же какие то данные отправляет в таблицу! Мне нужно создать тоже подобное. Что бы потом изтаблицы выводить на экран. Добавлено через 11 минут и 23 секунды В этом году в частности, последний понедельник - Он является началом шестой недели месяца. Не важно, что в этой неделе месяца один день. Но шестая! ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Ну да, отправляет... вот прямо так и отправляет - код дня (напр., 1 == Monday) и код недели (напр. 21 == Last)... и что? коды назначай сам. И интерпретируй их обратно тоже сам. В частности, чтобы проверить, что некая дата является последним понедельником месяца, нужно а) убедиться, что это понедельник, используя соотв. функцию; б) убедиться, что он последний - добавить неделю и сравнить месяц, он должен измениться... по результатам проверки вернёшь True либо False. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
McDoc |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Не то!
День недели норма. DayOfWeek - он работает отлично. Я наверное не могу толкм объяснить, попробую картинками. Вот шапка таблицы: ![]() Вот две тестовые записи, в одно номер недели в другом слово. ![]() Отлично, есть две записи. далее простенький тестовый запрос:
Получаем выборку, в ней одна запись. Значит Использование номера а не слова правильно! Неделя 4-ре сейчас, и в будущем если нам нужно вызвать неделю 4-ре мы забиваем в таблицу номер 4. Супер! ![]() Эта задача с номером недели решена отлично! Теперь представим, у нас Форма отправки в таблицу: С какого деня стартует - 21-06-2014 Что произойдет - Совещание у шефа Время - 10-00 День недели - Пятница (у нас в таблицен будет аргумент 6) Чястота - Послденяя Месяц - Август - он идет как Август, запрос как MONTHNAME Все аргументы понятно как улетят в таблицу, а что должно отправиться в таблицу как Последняя? Это сообщение отредактировал(а) McDoc - 20.6.2014, 12:24 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Код, который соответствует слову (термину, понятию) "Последняя". Этот код будет скормлен пользовательской функции в секции WHERE. И если указанная (или, как я понял, выбранная из поля записи) дата пройдёт проверку в функции, та вернёт True, и запись попадёт в отбор, иначе нет. Вот и всё. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
McDoc |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Отлично.
Помоги сделать проверку вставки в таблицу:
Вот вместо Last написать функцию проверки. Я нифига не могу понять..... Так как это все будет вставляться через РНР старницу.
Это сообщение отредактировал(а) McDoc - 20.6.2014, 12:45 |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
А тебе точно надо "проверить, что выполнена вставка в таблицу"? тогда просто вызови какой-нить affected_rows()... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
McDoc |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Мне без разницы что улетит в таблицу.
Сейчас пытаюсь найти код пример "проверки последней недели в месяце". Как я понял из твоего поста там будет типа 'Last' = dnso >hvbsk - 7 or hbvsi <>0 (и вот это пока бредовое выражение полетит в таблицу, как я понял - если это верно) |
|||
|
||||
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Ну или в более общем случае
Это сообщение отредактировал(а) Akina - 20.6.2014, 13:26 -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
McDoc |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 23.11.2011 Где: Dublin Репутация: нет Всего: нет |
Спасибо.
Мне кажется очень близко, но все равно, где то ошибка. 1 - Сменил Дату на компе, на 27-июня - Последняя пятница этого месяца ![]() Обновил одну из записей, добавл вместо номера недели код:
Имею: ![]() 4 записи: 1 - с Fourth 2 - c 4 3 - c Last 4 - c кодом Делаю запрос:
![]() Какого хрена он выводит запись для Четвертой недели, когда сейчас пятая (по компу) - не понимаю (((( |
||||
|
|||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |