Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要修改java时间戳以从数据库中获取最新记录_Java_Mysql_Jdbc_Timestamp - Fatal编程技术网

需要修改java时间戳以从数据库中获取最新记录

需要修改java时间戳以从数据库中获取最新记录,java,mysql,jdbc,timestamp,Java,Mysql,Jdbc,Timestamp,我已经编写了一个webservice,它将负责向用户界面显示数据库中最新插入或更新的记录 这是我的问题 String selectSQL = "SELECT id , VendorName , Item , updated_at , created_at from Orders where updated_at > ? OR created_at > ?"; 这是我的桌子结构 mysql> select * from Orders; +-------+-----------

我已经编写了一个webservice,它将负责向用户界面显示数据库中最新插入或更新的记录

这是我的问题

String selectSQL = "SELECT id , VendorName , Item , updated_at , created_at  from Orders where updated_at > ? OR created_at > ?";
这是我的桌子结构

mysql> select * from Orders;
+-------+--------------+----------+---------------------+---------------------+
| id    | VendorName   | Item     | updated_at          | created_at          |
+-------+--------------+----------+---------------------+---------------------+
| 12345 | PoppyCounter | Chocltae | 2014-05-08 18:49:42 | 2014-05-08 18:49:42 |
+-------+--------------+----------+---------------------+---------------------+
1 row in set (0.00 sec)
我正在使用如下所示的currenttimestamp进行检查

java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime());
如何使日期少于1分钟???

package com.serviceees;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

import com.google.gson.Gson;

import dto.Orders;

@Path("/updates")
public class DBPollerService {
    @GET
    @Produces("application/json")
    public String getUpdates() {
        System.out.println("getUpdates called");
        String clientResponse = "Error";
        ArrayList<Orders> newOrdersList = new ArrayList<Orders>();  
        Gson gson = new Gson();
        try {

            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            System.out.println("connection");
            Connection connection = null;
            PreparedStatement preparedStatement = null;
            String selectSQL = "SELECT id , VendorName , Item , updated_at , created_at  from Orders where updated_at > ? OR created_at > ?";
            try {
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "", "");
                while (true) {
                    System.out.println("Into while true");
                    try {

                        java.sql.Timestamp date = new java.sql.Timestamp(new java.util.Date().getTime());
                        preparedStatement = connection.prepareStatement(selectSQL);
                        preparedStatement.setTimestamp(1, date);
                        preparedStatement.setTimestamp(2, date);
                        ResultSet rs = preparedStatement.executeQuery();
                        while (rs.next()) {
                            Orders order = new Orders();
                            order.setId(rs.getInt(1));
                            order.setVendorName(rs.getString(2));
                            order.setItem(rs.getString(3));
                            newOrdersList.add(order);
                        }

                        Thread.sleep(3000);
                        clientResponse =    "jsonCallback(["+gson.toJson(newOrdersList)+"])";
                        return clientResponse;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

            } catch (SQLException e) {
                System.out.println("Connection Failed! Check output console");
                e.printStackTrace();

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        clientResponse =    gson.toJson(newOrdersList); 
        System.out.println("clientResponse"+clientResponse);
        return clientResponse;
    }

}
package.com.servicees;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.util.ArrayList;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.products;
导入com.google.gson.gson;
进口dto订单;
@路径(“/updates”)
公共类DBPollerService{
@得到
@生成(“应用程序/json”)
公共字符串getUpdates(){
System.out.println(“调用getUpdates”);
字符串clientResponse=“Error”;
ArrayList newOrdersList=新ArrayList();
Gson Gson=新的Gson();
试一试{
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
}catch(classnotfounde异常){
e、 printStackTrace();
}
System.out.println(“连接”);
连接=空;
PreparedStatement PreparedStatement=null;
String selectSQL=“选择id、供应商名称、项目、更新日期、从更新日期>或创建日期>的订单创建日期”;
试一试{
connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/test", "", "");
while(true){
System.out.println(“为真时输入”);
试一试{
java.sql.Timestamp date=new java.sql.Timestamp(new java.util.date().getTime());
preparedStatement=connection.prepareStatement(选择SQL);
preparedStatement.setTimestamp(1,日期);
preparedStatement.setTimestamp(2,日期);
ResultSet rs=preparedStatement.executeQuery();
while(rs.next()){
订单=新订单();
order.setId(rs.getInt(1));
order.setVendorName(rs.getString(2));
order.setItem(rs.getString(3));
newOrdersList.add(订单);
}
睡眠(3000);
clientResponse=“jsonCallback([“+gson.toJson(newOrdersList)+”)”;
返回clientResponse;
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}捕获(SQLE异常){
System.out.println(“连接失败!检查输出控制台”);
e、 printStackTrace();
}
}捕获(例外e){
e、 printStackTrace();
}
clientResponse=gson.toJson(newOrdersList);
System.out.println(“clientResponse”+clientResponse);
返回clientResponse;
}
}

提前谢谢

如何使日期少于1分钟

只有零下60000毫秒

Timestamp date = new Timestamp(new Date().getTime()-60 * 1000);

返回此日期对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数

如何使日期少于1分钟

只有零下60000毫秒

Timestamp date = new Timestamp(new Date().getTime()-60 * 1000);

返回此日期对象表示的自1970年1月1日00:00:00 GMT以来的毫秒数

必须从表示当前时间的长值中减去60000毫秒

Timestamp date = new Timestamp(new java.util.Date().getTime() - (60 * 1000));

现在,
date
表示一分钟前的时间

您必须从表示当前时间的长值中减去60000毫秒

Timestamp date = new Timestamp(new java.util.Date().getTime() - (60 * 1000));

现在,
date
表示一分钟前的时间

虽然从技术上讲这不是对您的问题的回答,但是您可以或者修改SQL语句,只返回最新的行。在MSSQL语法中,它如下所示:

SELECT TOP 1 * 
FROM Orders
INNER JOIN (
    SELECT id, updated_at AS modified from Orders
    UNION
    SELECT id, created_at from Orders 
) AS whatever ON whatever.id = Orders.id
ORDER BY whatever.modified DESC

这将始终返回上次修改(如在中创建或更新)的任何一行,并且不带任何参数。

虽然从技术上讲这不是对您的问题的回答,但您可以修改SQL语句,只返回最新的行。在MSSQL语法中,它如下所示:

SELECT TOP 1 * 
FROM Orders
INNER JOIN (
    SELECT id, updated_at AS modified from Orders
    UNION
    SELECT id, created_at from Orders 
) AS whatever ON whatever.id = Orders.id
ORDER BY whatever.modified DESC
这将始终返回上次修改(如在中创建或更新)的行,并且不带任何参数