mysql从表中的一段时间内检索数据

时间:2016-07-15 08:18:13

标签: php mysql mysql-workbench php-mysqlidb

- this is the table of picture i want to retrieve datas from

我需要两个查询。

  • 第一个是在当前时间之前获取最新stopTime的actionNo。

  • 第二个查询是获取当前时间之前的最新actionTime时的actionNo。

示例:

如果当前时间是:00:46:20

  • 第一个查询是获取actionNo 9(停止时间:00:45:00)

  • 第二个查询是获取actionNo 8(actiontime:00:41:30)

- this is eg of range to get data picture

1 个答案:

答案 0 :(得分:0)

SELECT MAX(id) FROM timestuff WHERE `actionTime` < CURTIME();
SELECT MAX(id) FROM timestuff WHERE `stopTime` < CURTIME();

这可以获取当前时间之前动作/停止时间的最新ID,如果您的表始终按照您所示的顺序显示(这意味着,ID显示您的时间值的时间顺序 - 这不是&#39 ;正如我刚刚注意到的那样,你的数据中的情况。)

对于您的情况:您可以采取另一步并在最接近当前时间的时间添加内部联接,然后查找该数据的ID。

第一个查询:对于当前时间之前的最新stopTime:

SELECT
    timestuff.id
FROM
    (
        SELECT
            MAX(stopTime) AS maxTime
        FROM
            timestuff
        WHERE
            `stopTime` < CURTIME()
    ) AS time
INNER JOIN timestuff ON timestuff.`stopTime` = time.maxTime;

第二个查询:对于当前时间之后的第一个actionTime:

SELECT
    timestuff.id
FROM
    (
        SELECT
            MIN(actionTime) AS minTime
        FROM
            timestuff
        WHERE
            `actionTime` > CURTIME()
    ) AS time
INNER JOIN timestuff ON timestuff.`actionTime` = time.minTime;