我在表格中记录了登录信息。我有id,ip,日期和时间的列。从登录记录中我想获取仅在最后一小时内创建的登录。
我正在扫描关于时间和日期函数的MySQL文档,但我似乎无法将它们正确地组合在一起。
有人能帮助我吗?
答案 0 :(得分:119)
使用DATE_SUB()和Now()函数:
select count(*) as cnt
from log
where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR);
希望它可以帮助你:)
答案 1 :(得分:4)
如果要将其实现为cronjob,则需要指定开始和结束。
例如,下午2点,如果您想从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')
答案 2 :(得分:3)
我建议使用一个日期时间列而不是日期和时间列。
假设您有一个名为last_login的日期时间列:
SELECT id, ip_address, last_login
FROM mytable
WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
答案 3 :(得分:1)
可以使用
轻松完成select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
答案 4 :(得分:1)
您也可以使用CURDATE()函数
SELECT
count(*) AS TotalCount
FROM
tblName
WHERE
datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
答案 5 :(得分:0)
没有具体细节,我认为Date_Add()会起作用..通过在你的where子句中添加NOW负数小时
(或Date_Sub())