сравнить даты, чтобы создать WordPress - PullRequest
0 голосов
/ 03 января 2012

Я пытаюсь использовать фильтр в WordPress для выбора всех сообщений за сегодня:

function filter_where( $where = '' ) {
    $where .= " AND post_date = CURDATE() ";
    return $where;
}

и не работает, но при использовании <= или> = получить сообщения.

спасибо за вашу помощь

Ответы [ 2 ]

1 голос
/ 03 января 2012

post_date - это поле DATETIME, я думаю, а не поле DATE.Попробуйте что-то вроде AND DATE(post_date) = CURDATE() для сравнения только по дате, а не по времени.

Редактировать: Теперь вы поняли, что ваш сервер MySQL имеет неправильный часовой пояс.Вы можете исправить это для каждого соединения.Я бы посоветовал найти фрагмент кода, где Wordpress подключается к базе данных, и добавить эти две строки кода после подключения.Возможно, вы захотите поискать mysql_connect или mysql_select_db, чтобы найти это.

$query = "SET time_zone = 'Chile/Santiago'";
mysql_query($query);

После того, как вы это сделаете, следующий код, вероятно, должен работать, согласно моему первоначальному ответу:

function filter_where( $where = '' ) {
    $where .= " AND DATE(post_date) = CURDATE() ";
    return $where;
}
0 голосов
/ 03 января 2012

Если post_date является столбцом даты и времени, вам следует использовать:

AND post_date >= CURDATE()
AND post_date < CURDATE() + INTERVAL 1 DAY        --- this is needed just in case
                                                --- your table has posts with 
                                                --- future dates (by error)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...