MySQL: получение строк на заданную дату - PullRequest
0 голосов
/ 29 декабря 2010

У меня следующий запрос:

$yesterday=date("Y-m-d",mktime(0,0,0,date("m"),(date("d")-1),date("Y")));
$sql = "SELECT messages FROM user WHERE sent_date='".$yesterday."'";

С его помощью я выбираю все сообщения, отправленные пользователям вчера.

В моей базе данных sent_date выглядит так: 2010-12-28 11:55:30

Но с $ вчера я получаю: 2010-12-28

Итак, я получаю 0 результатов.

Как я могу изменить свой запрос, чтобы я мог выбрать все сообщения вчера, независимо от часа?

Спасибо за тонну

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Вы должны использовать MySQL Date функции для этого (при условии, что столбец является datetime).

SELECT messages FROM user WHERE sent_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);

или всегда с 00:00

SELECT messages FROM user WHERE sent_date = DATE_SUB(CONCAT(CURDATE(), ' 00:00:00'), INTERVAL 1 DAY);

Если это не дает никаких результатов, пожалуйста, отредактируйте свой вопрос с дополнительной информацией. Вы уточняете схему, как вставляете данные и убедитесь, что в таблице есть допустимые строки.

2 голосов
/ 29 декабря 2010

Возможно, используя

$sql = "SELECT messages FROM user WHERE date(sent_date)='".$yesterday."'";

Таким образом, вы не используете время в datetime для сравнения.

1 голос
/ 29 декабря 2010

Вы могли бы сделать МЕЖДУ и указать начальное и конечное время, объединенное с $ вчера ...

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...