【问题标题】:Get records from database which is 5 minutes from current time从距当前时间 5 分钟的数据库中获取记录
【发布时间】:2018-09-06 15:00:37
【问题描述】:

我在 mySQL 数据库中有一个时间戳列和一个名为 alerttime 的表 - 其中包含当前格式为 2018-09-06 15:59:00 的记录

我想运行一个查询,它只显示距当前时间和日期 5 分钟的记录(提前)。例如,如果现在的时间是 15:55 - 它会显示带有时间的记录 (2018-09-06 15:59:00)

有谁知道如何做到这一点?

SELECT *
  FROM (`todolist`)
  WHERE `type` = '2' AND
        user_id = '1' AND
        DATEADD(minute, -5, GETDATE())

我尝试了上述方法,但我认为这不是正确的做法,我只是在某个论坛的某个地方找到了它

【问题讨论】:

  • db的类型是什么?
  • sql为数据库类型

标签: mysql


【解决方案1】:
SELECT * FROM (`todolist`) WHERE `type` = '2' AND user_id = '1' AND alerttime >= date_add(now(), interval 5 minute)

【讨论】:

  • 我已经尝试过了,但我似乎只得到 0 个结果,不知道为什么
  • 您的 type 和 user_id 是 INT 还是 VARCHAR?如果它们是 int,请删除 ' 您的表中将来有 type = 2 和 user_id = 1 的数据?试试看:SELECT * FROM (todolist) WHERE alerttime >= date_add(now(), interval 5 minute)
  • 已经从查询中删除了 user_id 和 type,它仍然返回 0 个结果。列结构设置为日期时间(尝试过的时间戳)相同的问题。不知道为什么会发生这种情况!
  • 因为以后没有记录了!使用当前时间戳创建时间戳。您可能需要什么,是在创建警报后 5 分钟?不是提前 5 分钟吗?
  • 是的,所以基本上在列中我有警报时间,可以说 - 从现在开始设置 10 分钟。当记录前还有 10 分钟时,脚本会向用户发送一封电子邮件,告诉他们他们在 10 分钟内收到警报。所以基本上,我需要显示从现在开始未来 10 分钟的所有记录
【解决方案2】:

我认为您错过了比较,您添加了 -5 分钟,但之后您没有比较该值,您可能需要将其与类似的值进行比较。

DATEADD(minute, -5, GETDATE()) < GETDATE()

您还可以查看 Microsoft 的参考资料:

https://docs.microsoft.com/en-us/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-2017

我希望这会有所帮助,您只需将添加 -5 分钟的结果与某事进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2013-12-20
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多