извлекать записи из поля, которое не в формате даты и времени

#php #mysql #sql

#php #mysql #sql

Вопрос:

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

 $y =$_REQUEST['y'];
$m =$_REQUEST['m'];
$date = "$y/$m";

$table = mysql_query("SELECT * FROM records WHERE meeting = 'Yes' AND (meeting_date LIKE '%".$date."%') ORDER BY id DESC");
$rows = mysql_fetch_assoc($table);
  

ценю ваше время и помощь

Комментарии:

1. Используйте DATE_FORMAT следующим образом DATE_FORMAT(meeting_date, '%Y/%m') = $date

2. @ProfessorZoom это не работает, потому что это строка, не сохраненная в формате datetime

3. Вы пробовали это? Я сделал, и у меня это сработало

Ответ №1:

Предполагая, что ваш ввод представляет собой строку в формате dd / mm / гггг, вы могли бы использовать str_to_date и date_format

 mysql_query("SELECT * 
            FROM records
            WHERE meeting = 'Yes' 
            AND  date_format(str_to_date(meeting_date, '%d/%m/%Y' ), '%Y/%m')  
                        =  date_format(str_to_date ($date, '%d/%m/%Y') , '%Y/%m') 
            ORDER BY id DESC");
  

Комментарии:

1. ах, это тоже хорошее решение. ценю это

2. Хорошо, @johrampong .. надеюсь, это может быть полезно

3. Это действительно полезно, приятель

4. что ж, тогда вы можете оценить как полезное

5. ах да, совершенно забыл извинения

Ответ №2:

 meeting_date LIKE '%".$m."/%"."%/".$y."%'.
  

У вас есть день между месяцем и годом.

Было бы намного лучше, если бы вы могли изменить поле varchar на date и отформатировать, как это выглядит на сайте после запроса. Тогда ваш запрос будет выглядеть следующим образом:

 MONTH(meeting_date) = $m AND YEAR(meeting_date) = $y
  

Комментарии:

1. я попробую второе решение.