Получение записей за 10 минут до указанной даты - PullRequest
0 голосов
/ 27 апреля 2018

Нужно найти записи, которые были на 10 минут позже указанной даты. Из приведенного ниже запроса он получает записи на 10 минут раньше от заданной даты, которая, в свою очередь, выбирает все записи за предыдущий или предыдущий день.

Поскольку я ожидаю получить все записи с указанной даты, которая произошла на 10 минут раньше. Но не все записи, т. Е. Предыдущие дни до указанной даты.

$sql = "SELECT otb.*
FROM oc_table_book otb
LEFT JOIN oc_order o
ON (o.order_id = otb.order_id)
WHERE otb.preorder_status_id = '3' AND 
otb.booked_date <= '" . $this->db->escape($table_data['booked_date']) . 
"' - INTERVAL 10 MINUTE ORDER BY otb.booked_date";

Пробовал с DATEADD () не работал

$sql = "SELECT otb.*
FROM oc_table_book otb
LEFT JOIN oc_order o
ON (o.order_id = otb.order_id)
WHERE otb.preorder_status_id = '3' AND 
otb.booked_date <= dateadd(minute, -10, '" . $this->db->escape($table_data['booked_date']) . 
")";

Результаты в

Fatal error: Uncaught Exception: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2018-01-19 07:30:00)' at line 6<br />Error No: 1064<br />SELECT otb.* FROM oc_table_book otb LEFT JOIN oc_order o ON (o.order_id = otb.order_id) WHERE otb.preorder_status_id = '3' AND otb.booked_date <= dateadd(minute, -10, '2018-01-19 07:30:00) in /var/www/html/silverspoon/system/library/db/mysqli.php on line 40

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

У вас ошибка в синтаксисе SQL

Попробуйте этот запрос:

SELECT otb.* FROM oc_table_book otb
LEFT JOIN oc_order o
ON o.order_id = otb.order_id
WHERE otb.preorder_status_id = '3' AND 
otb.booked_date <= dateadd(minute, -10,".$this->db->escape($table_data['booked_date']).")
0 голосов
/ 27 апреля 2018

Вы бы хотели:

SELECT otb.*
FROM oc_table_book otb JOIN  -- I don't see why LEFT JOIN is necessary
     oc_order o
     ON o.order_id = otb.order_id
WHERE otb.preorder_status_id = 3 AND -- probably an integer
      otb.booked_date <= ? - INTERVAL 10 MINUTE AND
      otb.booked_date >= DATE(?)
ORDER BY otb.booked_date;

Обратите внимание на использование ?. Это заполнитель параметра. Вы должны использовать это для передачи константных значений в запросы.

...