Ответ 1
Используйте функции DATE_SUB() и Now():
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
Надеюсь, это поможет вам:)
Я веду учет логинов в таблице. У меня есть столбцы для id, ip, даты и времени. Из этой записи логинов я хочу получить логины, сделанные только за последний час.
Я просматриваю документы MySQL по функциям времени и даты, но просто не могу их правильно объединить.
Кто-нибудь может мне помочь?
Используйте функции DATE_SUB() и Now():
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
Надеюсь, это поможет вам:)
Я рекомендую иметь один столбец datetime вместо столбцов даты и времени.
Предположим, у вас есть столбец datetime с именем last_login:
SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
Если вы хотите реализовать это в cronjob, вам нужно указать начало и конец.
Например, в 14:00, если вы хотите получить данные за прошедший час с 13:00:00 до 13:59:59, вот как это сделать:
dateField BETWEEN
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:00:00')
AND
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 HOUR), '%Y-%m-%d %H:59:59')
это можно сделать легко, используя
select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
Вы также можете использовать функцию CURDATE()
SELECT
count(*) AS TotalCount
FROM
tblName
WHERE
datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
без специфики, я думаю, что Date_Add() будет работать.. добавив в ваше предложение where добавление отрицательных часов NOW
(или Date_Sub())