Как искать данные только по дате

#php #mysql

#php #mysql

Вопрос:

У меня есть данные в таблице mysql в форме datetime, но когда я хочу выполнить поиск на экране php, я просто хочу, чтобы данные отображались по дате.На данный момент мой sql-запрос является.

 $datefrom=date($_GET['datefrom']);

$dateto=date($_GET['dateto']);

$issues = $database->select("tablename", "*", [
    "dateadded[<>]" => [$datefrom,  $dateto]
]);
  

Каким будет решение.Пожалуйста, укажите

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

1. Я не думаю, что вы получите то, что хотите с date($_GET['datefrom']) .. Вам нужно strtotime() , или еще лучше — использовать класс DateTime или Carbon.

2. Какой фреймворк вы используете? Каков формат даты в вашем поле столбца и каков формат даты в запрошенных вами данных?

3. не используя какой-либо фреймворк. Это 2019-02-05 13:41:47 формат даты в столбце и этот формат даты 2019-04-08, который я запросил.

4. Если вы не используете фреймворк, покажите свой класс, из которого $datetime определен. Этот метод не является стандартным.

5. Возможно, тогда вы можете просто удалить date() вокруг ваших определений даты. date() используется для форматирования дат, в настоящее время вы используете его неправильно.

Ответ №1:

Попробуйте с этим —

 $datefrom = date('Y-m-d h:i:s', strtotime($_GET['datefrom']) );

$dateto   = date('Y-m-d h:i:s', strtotime($_GET['dateto']) );

$issues   = $database->select("tablename", "*", [
    "dateadded[<>]" => [$datefrom,  $dateto]
]);
  

или

Попробуйте это, если дата «до» и «из» отличается —

  $d1 = $_GET['datefrom'].' 00:00:00';
 $d2 = $_GET['dateto'].' 00:00:00';

 $datefrom = date($d1);

 $dateto   = date($d2);

SELECT * FROM `tablename` WHERE `datecol` BETWEEN '2018-11-27 00:00:00' and '2018-12-07 00:00:00'
  

И

Для поиска в тот же день используйте запрос такого типа —

 SELECT * FROM datetable WHERE datecol LIKE '2012-12-25%'
  

Надеюсь, это поможет вам.

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

1. Он показывает dateto и datefrom в этом формате 2019-08-04 12:00:00, при этом я получу нулевые данные, потому что в таблице с этим временным интервалом нет данных, возможно, он будет просто искать данные только по дате, игнорируя временной интервал из таблицы. Например, у меня есть данные с этим «2019-04-08 10: 40: 02», но когда я ищу данные только по дате, они не показывают данные. Я хочу искать данные только по дате. Я надеюсь, что мой вопрос ясен

2. Вы можете сделать еще одну вещь, например, $ d1 = $_GET[‘datefrom’].’ 00:00:00′; дата ($ d1); Это вернет дату в формате 2019-08-04 00:00:00, например, добавьте время ’23:59:59′ в переменную dateto. например: ВЫБЕРИТЕ * ИЗ tablename, ГДЕ columnname МЕЖДУ ‘2019-08-04 00:00:00’ И ‘2019-08-04 23:59:59’