获取两个时间戳之间的时差

时间:2015-11-21 18:48:02

标签: java sql oracle

我想知道如何获得两个时间戳之间的时差。 两个时间戳将始终在同一个日期。

我收到一个负的长值作为结果,而我想得到分钟的时间差。

SQL为我提供了正确的数据,但我也会附上代码。

public long CalculateTimeFromTimestamp(Timestamp d1, Timestamp d2){
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date endDate = null, reqDate= null;

    try {
         endDate = sdf.parse(d1.toString());
         reqDate = sdf.parse(d2.toString());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return endDate.getTime() - reqDate.getTime();

}

public long getArbeitszeitPerPro(int id) {
    Statement stmt = null;
    String sql = "SELECT ARBEITSBLOCK.STARTZEIT , "
                + " ARBEITSBLOCK.ENDZEIT "
                + " FROM ARBEITSBLOCK "
                + " INNER JOIN TAETIGKEIT "
                + " ON ARBEITSBLOCK.TAETIGKEIT_ID = TAETIGKEIT.ID "
                + " INNER JOIN PROJEKT "
                + " ON PROJEKT.ID = TAETIGKEIT.PROJEKT_ID "
                + " WHERE PROJEKT.ID = " + id; 


    long ergb = 0;

    try{
        stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rs = stmt.executeQuery(sql);
        if(rs.last()){
            s = new Timestamp[rs.getRow()][2];
            rs.beforeFirst();
        }


        while(rs.next()){
            ergb += d.CalculateTimeFromTimestamp(rs.getTimestamp(1), rs.getTimestamp(2));

        }

    }
    catch(SQLException e){
        e.printStackTrace();
    }
    return ergb;    
}

1 个答案:

答案 0 :(得分:0)

找出以毫秒为单位的差异,除以一分钟内的毫秒数(60,000):

   public long CalculateTimeFromTimestamp(Timestamp d1, Timestamp d2){
        return Math.abs(d1.getTime() - d2.getTime()) / 60000L;
    }