2016-12-15 2 views
0

У меня есть несколько записей в моей базе данных, в таблице есть столбец с названием «будний день», где я храню будний день, например «mon» или «fri». Теперь из интерфейса, когда пользователь выполняет поиск параметров, отправленных на сервер, является startday и endDay.Извлечение записей базы данных между двумя рабочими днями

Теперь я хотел бы получить все записи между startDay и endDay. Мы можем предположить, что startDay - «mon», а endDay - «солнце». В настоящее время я не знаю, как это сделать.

+2

использовать цифры вместо из «mon, tue ...» таким образом вы можете просто позвонить по диапазону и получить их. так что если вы поместите 1 как понедельник, 2 в качестве вторника и т. д. и хотите попасть между понедельником и пятницей, вы можете просто позвонить, где день недели больше или равен 1 и меньше или равен 5. сохранение mon или tue или fri или что-то очень неинтуитивное, если вы хотите агрегировать данные с использованием этих данных – khuderm

+0

Согласен, что кажется намного проще, спасибо: D – user3718908

+0

Оставит его открытым, хотя ему все равно нужен ответ, возможно, потребуется решение позже. – user3718908

ответ

0

Создайте таблицу с именами дней и их соответствующим номером. Тогда вам просто нужно объединить свою текущую таблицу с таблицей дней по имени, а затем использовать номера в этой таблице для выполнения своих запросов.

0

Не совсем практично, но можно преобразовать sun, mon, tue в числа, используя MySQL.

Настройка статический год и номер недели, как 201610 на 10-й неделе этого года, а затем использовать комбинацию DATE_FORMAT с STR_TO_DATE:

DATE_FORMAT(STR_TO_DATE('201610 mon', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 sun', '%X%V %a'), '%w') 
DATE_FORMAT(STR_TO_DATE('201610 tue', '%X%V %a'), '%w') 

Эти 3 заявления будут вычисляться 0,1,2 соответственно.

Главное это делает, преобразование формата %a (вс-сб) в формате %w (0-6)

-1

хорошо я не знаю архитектуру вашего приложения, как я думаю, хранение и выполнение запроса строка в течение недели не подходит, но я могу рассказать вам об этом. сделать вспомогательную функцию, которая вернет вам массив будням в диапазоне, т.е.

function getWeekDaysArray($startWeekDay, $endWeekDay) { 
    returns $daysArray['mon','tue','wed']; 
} 

$daysRangeArray = getWeekDaysArray('mon', 'wed'); 

теперь с этим массивом можно запросить в таблице

DB::table('TableName')->whereIn('week_day', $daysRangeArray)->get();

Надежда эта помощь

+0

Это даже не компилируется. –

Смежные вопросы