У меня есть следующий код, и он, похоже, не дает ожидаемых результатов:
$date_from = '2012-04-27 18:19:33';
$date_to = '2012-05-29 00:59:57';
$database->connect();
$ancestors = mysql_query('
SELECT * FROM ' . $database->db_prefix . 'comments e
WHERE e.created BETWEEN "' . $date_from . '" AND "' . $date_to . '" AND
e.ancestors = "' . $comment["id"] . '" AND e.user_id != "' . $user->user_object["id"] . '" AND
NOT EXISTS
(
SELECT null
FROM ' . $database->db_prefix . 'notifications d
WHERE d.target_id = e.id
)
ORDER BY e.created DESC
', $database->connection_handle);
$database->close();
Это может быть глупой ошибкой. Но мне трудно быть уверенным, когда я не уверен, что оператор select BETWEEN и используемые даты являются действительными вещами MYSQL.
Любая помощь будет здорово. Я прочесывал, и то, что я делаю, кажется правильным, поэтому путаница.
ОТРЕДАКТИРОВАНО //
У меня есть много комментариев, сделанных между датами date_from и date_to, и в таблице уведомлений (часть не существует) нет уведомлений... В общем, я должен вернуть около 25 комментариев... Вместо этого я просто возвращаю один комментарий, который дата 2012-05-29 00:23:39
ОТРЕДАКТИРОВАНО //
Это потому, что вы можете сравнивать дату только с датой... и время с временем? Как я могу адаптировать mysql для этого?
ОТРЕДАКТИРОВАНО //
Определенно, функция between работает неправильно. Я действительно не уверен, что, черт возьми, происходит не так с этим.
- Можете ли вы вернуть записи между двумя датами?
- Можете ли вы привести пример?
ОТРЕДАКТИРОВАНО // Проблема решена. Это не имело никакого отношения к запросу, поэтому можно с уверенностью сказать, что это правильный способ сделать это. Я сделал свои диапазоны дат безумным способом. Спасибо за всю вашу чертову помощь, ребята!!!!
e.created
в вашей базе MySQL? - person Konstantin Pereiaslov   schedule 29.05.2012CAST
? Вы можете позволить PHP сделать преобразование за вас; обычноCAST
следует использовать для полей, уже находящихся в базе данных :) - person Ja͢ck   schedule 29.05.2012