Мне нужно получить последние 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();
}
}
}
}
String qry = "SELECT * FROM test.api WHERE EndTime > date_sub(now(),interval 2 MINUTE) ";
Попробуй это:
-- 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;
Таким образом, вам нужно будет узнать разницу во времени между обоими временами и использовать соответствующий запрос, как было предложено выше.
Не используйте max (time) Вместо этого используйте сейчас()
String qry = "SELECT * FROM test.api WHERE EndTime = date_sub(now(), interval 2 minute)";