В модели ProductSell есть тип столбца даты varchar и формат d / m / Y, как я могу получить данные, используя wherebetween? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть модель ProductSell с датой столбца, тип которой varchar и формат d / m / Y.

Предположим, у меня есть две даты 31/03/2019 и 01/04/2019.Я хочу получить данные между этими датами. Я пытаюсь, например,

$productsale=ProductSell::whereBetween('date',[$request->from,$request- 
>to])->get();

, когда дата 31.03.2009 и 01.04.2017, это не работает, но когда дата 01.03.2009 и 31/ 03/2019 работает нормально

Есть ли решение?

1 Ответ

1 голос
/ 01 апреля 2019

Если это вообще возможно, измените тип данных с varchar на date, datetime или timestamp. Проблема здесь в том, что база данных не понимает, как упорядочивать столбцы даты в хронологическом порядке - поскольку она думает, что имеет дело со стандартным текстом, и хочет отсортировать их по алфавиту. Использование datetime позволяет сортировать строки по дате и выбирать нужное подмножество.

К счастью, вы часто можете просто изменить тип данных столбца, и если значения в стандартном формате (а ваша таблица не миллионы и миллионы записей), они обычно преобразуют их просто отлично. Я предполагаю, что вы используете MySQL здесь, но большинство баз данных должно иметь что-то похожее.

ALTER TABLE <tableName> MODIFY <columnName> datetime;

Конечно, я бы посоветовал сделать копию таблицы и сначала попробовать ее преобразовать - просто на всякий случай.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...