0

我的网站上有一个工作图表,但图表数据在 24 小时时间范围内开始和结束,而实际上它应该从框架开始。我的查询看起来像:

select * where timestamp > 24hrs

如何查询时间范围内的所有数据,加上时间范围之前的第一个数据点?我不能使用恒定值,因为有时离屏点在 10 小时之外,有时在 10 秒之外。

4

1 回答 1

1

您可以选择时间范围之前的第一个数据点:

SELECT * FROM yourtable WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1

如果可能有多个相同的时间戳,那么这可以随机选择一个 - 如果这是不可接受的,则使用ORDER BY timestamp DESC, primary_key

所以你可以通过 a 得到你想要的UNION

/* This gets the first item previous to your range limitation */
SELECT
    * FROM yourtable
    WHERE timestamp <= 24 ORDER BY timestamp DESC LIMIT 1
UNION
/* Your original query */
SELECT
    * FROM yourtable
    WHERE timestamp > 24;

我在这里假设(根据您的问题)时间戳是一个整数,但如果它是一DATETIME列,则可以调整上述内容。

于 2013-01-22T21:10:50.023 回答