【问题标题】:Fetching rows added last hour获取上一小时添加的行
【发布时间】:2011-04-10 12:41:07
【问题描述】:

我在表格中保存了登录记录。我有 id、ip、日期和时间的列。从该登录记录中,我想获取仅在过去一小时内进行的登录。

我正在浏览有关时间和日期函数的 MySQL 文档,但似乎无法正确组合它们。

有人可以帮帮我吗?

【问题讨论】:

  • 是四列还是三列,“日期和时间”的数据类型是什么?
  • 现在改了,日期和时间只有一列 - 以及它的日期时间。

标签: mysql datetime date-range


【解决方案1】:

如果你想把它实现到一个 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】:

    你也可以使用CURDATE()函数

    SELECT
        count(*) AS TotalCount
    FROM
        tblName
    WHERE
        datetime >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
    

    【讨论】:

      【解决方案3】:

      使用

      可以轻松完成
      select count(*) from logins where datetime>= NOW()- INTERVAL 1 HOUR
      

      【讨论】:

        【解决方案4】:

        我建议使用一个日期时间列而不是日期和时间列。

        假设您有一个名为 last_login 的日期时间列:

        SELECT id, ip_address, last_login
        FROM mytable
        WHERE last_login >= DATE_SUB(NOW(), interval 1 hour);
        

        【讨论】:

        • 如果需要打印特定日期的日期怎么办?我不想获取前一天的日期,而只想获取当前日期。你能帮我解决这个问题吗?
        【解决方案5】:

        如果没有具体细节,我认为 Date_Add() 会起作用.. 通过在 where 子句中添加 NOW 负小时数

        (或 Date_Sub() )

        【讨论】:

          【解决方案6】:

          利用 DATE_SUB() 和 Now() 函数:

          select count(*) as cnt
          from  log
          where date >= DATE_SUB(NOW(),INTERVAL 1 HOUR); 
          

          希望对你有帮助:)

          【讨论】:

          • 是的,我做了类似的事情,只有 TIMESUB(或 SUBTIME?)。但这是否要求日期字段是日期时间类型?
          • 是的,使用 TIMESUB 更合适。是的,第一个表达式必须是日期时间表达式。第二个应该是时间表达式。看看这个dev.mysql.com/doc/refman/5.1/en/…
          • 以UTC格式保存数据,需要使用UTC_TIMESTAMP()而不是NOW()。
          • 这很好用,但只适用于快速查询。如果您想确保准确获取数据,这将很棘手。例如,如果我有一个每小时运行的脚本,我不能只说给我最后一小时的数据,因为脚本在启动时可能会有细微的变化。所以我必须设置从 13:00:00 到 13:59:59 的时间范围,而不是日期 > 1 小时前的下午 2 点
          猜你喜欢
          • 2013-11-13
          • 1970-01-01
          • 1970-01-01
          • 2018-03-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-17
          • 2011-10-28
          相关资源
          最近更新 更多