Как получить данные за последние 2 минуты из MySQL, используя Java

0

Мне нужно получить последние 2-минутные данные из базы данных MySQL с помощью программы Java? Я не знаю, как написать запрос для извлечения данных в определенный временной интервал и многого, но я не нашел правильный запрос? может ли кто-нибудь помочь мне?

Ниже моя программа Java, которая связана с базой данных MySQL, имеет запрос, но этот запрос не работает и генерирует SQLSyntaxErrorException.

public static void main(String[] args)
    {
        String qry = "SELECT * FROM test.api WHERE EndTime = SELECT max(time) - interval 2 minute";

        String url = "jdbc:mysql://localhost:3306";

        String user = "root";

        String password = "root@123";

        Connection conn = null;
        try 
        {
            conn = DriverManager.getConnection(url, user, password);

            PreparedStatement pstmt = conn.prepareStatement(qry);

            ResultSet rs = pstmt.executeQuery();

            while(rs.next())
            {
                String Name = rs.getString("Name");
                String time = rs.getString("EndTime");

                System.out.println(time);
                System.out.println(Name);
            }
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
        }
        finally
        {
            if(conn != null)
            {
                try 
                {
                    conn.close();
                    System.out.println("---Connection closed successfully---");
                } 
                catch (SQLException e) 
                {
                    e.printStackTrace();
                }
            }
        }
    }
  • 0
    Я только что обновил свой ответ.
Теги:

3 ответа

0
     String qry = "SELECT * FROM test.api WHERE EndTime > date_sub(now(),interval 2 MINUTE) ";
0

Попробуй это:

-- suppose your data source time coincides with your storage server time
-- so to get the time 2 minutes ago should be like
SELECT * FROM test.api WHERE EndTime >= now() - interval 2 minute;

-- suppose your data source time is 60 behind your storage server time
-- so to get the time 2 minutes ago should be like
SELECT * FROM test.api WHERE EndTime >= now() - interval (2 + 60) minute;

-- suppose your data source time is 60 infront of your storage server time
-- so to get the time 2 minutes ago should be like
SELECT * FROM test.api WHERE EndTime >= now() - interval (2 - 60) minute;

Таким образом, вам нужно будет узнать разницу во времени между обоими временами и использовать соответствующий запрос, как было предложено выше.

DEMO

0

Не используйте max (time) Вместо этого используйте сейчас()

String qry = "SELECT * FROM test.api WHERE EndTime = date_sub(now(), interval 2 minute)";
  • 0
    У меня есть сомнения, что now () занимает текущее время системы. Это правильно?
  • 0
    Да, это правильно
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню