gpt4 book ai didi

php - 具有定义的日期间隔的 MySQL 查询行

转载 作者:行者123 更新时间:2023-11-29 18:03:38 24 4
gpt4 key购买 nike

我不知道如何解决以下问题:我的数据库中有几行,每行一个时间戳。现在我想过滤所有行中的条目,直到任意两个日期的日期间隔大于 30 天。 我没有为特定日期定义日期间隔,例如 12/01/2017 到 11/01/2017 之间,这很容易,即使对我来说也是如此。我所知道的是,从一行到下一行的时间戳间隔(查询必须按时间戳降序排序)不得大于 30 天。

请查看我的数据库 http://sqlfiddle.com/#!9/55a521/2在这种情况下,显示的最后一个条目应该是 ID 为 65404844 的条目。如果您能给我一个小提示,我将不胜感激。

非常感谢!

最佳答案

您可以使用此查询来构建过滤器。

SELECT
t.id,
from_unixtime(timestamp)
, IF(@pt < timestamp - 30*24*60*60, 1, 0) AS filter
, @pt := timestamp
FROM
t
, (SELECT @pt := MIN(timestamp) FROM t) v
ORDER BY timestamp

这里重要的是按时间戳排序。然后用最小值初始化 @pt 变量。另一件重要的事情是选择子句的顺序正确。

首先将当前记录与 IF() 函数中的变量进行比较。然后将当前记录分配给该变量。这样,当计算下一行时,该变量仍保留 IF() 函数中前一行的值。

要获取所需的行,请在子查询中使用上述查询进行过滤。

SELECT id, ts FROM (
SELECT
t.id,
from_unixtime(timestamp) as ts
, IF(@pt < timestamp - 30*24*60*60, 1, 0) AS filter
, @pt := timestamp
FROM
t
, (SELECT @pt := MIN(timestamp) FROM t) v
ORDER BY timestamp
) sq
WHERE sq.filter = 1

关于php - 具有定义的日期间隔的 MySQL 查询行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48110531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com