在最后一小时添加了行

时间:2010-09-09 23:38:22

标签: mysql datetime date-range

我在表格中记录了登录信息。我有id,ip,日期和时间的列。从登录记录中我想获取仅在最后一小时内创建的登录。

我正在扫描关于时间和日期函数的MySQL文档,但我似乎无法将它们正确地组合在一起。

有人能帮助我吗?

6 个答案:

答案 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())