SQL-запрос, чтобы показать количество историй, созданных за последние 24 часа? - PullRequest
0 голосов
/ 27 октября 2010

Я пытаюсь создать пользовательский запрос, который покажет количество историй, опубликованных за последние 24 часа на сайте Drupal 6.

Истории хранятся в таблице «узлов».каждая запись имеет «созданную» строку, в которой записывается метка времени UNIX, когда была опубликована статья.

Вот запрос, который я пытаюсь выполнить:

$sq = 'SELECT COUNT(*) cnt '
    . 'FROM {node} c WHERE created >= dateadd(hour,-24,getdate())'; 

работать, хотя.Что я делаю не так?

РЕДАКТИРОВАТЬ: Вот общий код, который я пытаюсь использовать прямо сейчас:

$sq = 'SELECT COUNT(*) AS cnt FROM {NODE} n WHERE FROM_UNIXTIME(n.created) >= DATE_SUB(NOW(), INTERVAL 1 DAY)';                                                                                        

$ q = db_query ($ sq);

while ($ o = db_fetch_object ($ q)) {

            print_r($o);

}

Этот print_r ничего не возвращает.Где моя ошибка?

Ответы [ 2 ]

4 голосов
/ 27 октября 2010

Для MySQL используйте:

SELECT COUNT(*) AS cnt
  FROM NODE n
 WHERE FROM_UNIXTIME(n.created) >= DATE_SUB(NOW(), INTERVAL 1 DAY)

Помните, что NOW() включает время, когда выполняется оператор. Если вы хотите считать записи, начиная с полуночи предыдущего дня, используйте:

SELECT COUNT(*) AS cnt
  FROM NODE n
 WHERE FROM_UNIXTIME(n.created) >= DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)

Справка:

2 голосов
/ 27 октября 2010

Поскольку вы делаете это в PHP, вы можете просто использовать $_SERVER['REQUEST_TIME'].Я предполагаю, что это будет быстрее, чем манипулирование датами с SQL:

$count = db_result(db_query("SELECT COUNT(nid) FROM {node}
          WHERE created >= %d;", $_SERVER['REQUEST_TIME'] - 86400));

Альтернативно, вы можете использовать time, чтобы получить текущую метку времени, но это будет чуть медленнее, чем с помощью $_SERVER['REQUEST_TIME'] переменная.

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