возвращаемые даты изменились из запроса sql, пока выбраны правильные строки - PullRequest
0 голосов
/ 08 июня 2018

Проблема: у меня есть база данных с полем типа datetime для хранения даты.Дата сохраняется в формате гггг-мм-дд чч: мм: сс.Я хотел бы получить все строки, созданные после определенной даты. Я делаю простой SQL-запрос, например:

 // the date comes from the form input in the format dd-mm-yyy)
 $d = new DateTime('01-02-2017');
 $convertDate = $d->format('Y-m-d');

 "SELECT * FROM " . DB_PREFIX . "order WHERE date_created >= '" . $convertDate . "'";

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

----------------------------------------------
|   database value    |    front end display   |
----------------------------------------------
| 2017-12-04 14:25:28 |  2017-10-30 14:50:45   |
----------------------------------------------
| 2018-01-11 07:56:27 |  2016-11-25 12:48:30   |
----------------------------------------------

Кто-нибудь может объяснить, почему это происходит?

1 Ответ

0 голосов
/ 13 июня 2018

Я решил проблему.Проблема никогда не была в датах.проблема заключалась в звёздочке * в операторе SELECT.Мне пришло в голову, что в некоторых таблицах имена столбцов могут быть одинаковыми.И это было так.Таким образом, на пути к полученным строкам данные из столбца date_added в таблице заказов были перезаписаны столбцом date_added в customer.Когда я указал столбцы вместе с псевдонимом таблиц, я получил правильные данные.

Итак, сначала запрос был похож на
"SELECT * FROM order o LEFT JOIN" order_total ot ON (..) LEFT JOINcustomer c ON (..) LEFT JOIN .... ";

И он стал" SELECT o.date_added, o.order_id, .... FROM order o LEFT JOIN order_total не включен (..) LEFT JOIN клиент c ON (..) LEFT JOIN .... ";

...