java - 如何使用java在SQL中查找两个时间值的差异?

标签 java sql sql-server datetime

我有一个java类,它给我time_intime_outTime_intime_out也是我的sql数据库中的表。我想找到可以按 time_out - time_in 计算的工作时间。 time_in 和 time_out 是时间格式 (hh:mm:ss)。如何找到工作时间?由于数据变量类型(我使用字符串),我尝试的代码不起作用。但无论如何我都无法使用 int 数据类型来做到这一点。 这是我的类(class)。我没有设置 time_out 以节省空间。假设还有另一种方法可以检索 time_out,就像 time_in 一样。

import java.sql.*;


public class blah {

    //------MONDAY-------
    private static String timeInQMonday;
    private static String timeInMonday;


    public static void main(String[] args) {

        loadTimeInMonday();
        loadWorkHour();

    }

    public static void loadWorkHour(){
        //workHour = time_out - time_in;
    }

    public static void loadTimeInMonday(){
                try {
                     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
                     String url = "jdbc:sqlserver://SERVER2\\WASPDBEXPRESS;databaseName=WaspTime;integratedSecurity=true;";
                     Connection conn = DriverManager.getConnection(url);
                     System.out.println("Connection established!");

                     //Creating the statement
                     Statement stmt = conn.createStatement();
                     timeInQMonday = "SELECT CONVERT(VARCHAR(8), time_in, 108) AS time_in  FROM [WaspTime].[dbo].[job_punch_card]  WHERE emp_key=55 and punch_day= DATEADD(week, DATEDIFF(day, 0, getdate())/7, 0)";

                     try {
                         stmt = conn.createStatement();
                         ResultSet rsTimeIn = stmt.executeQuery(timeInQMonday);
                         //-------DISPLAY THE RESULT-----

                         while (rsTimeIn.next()) {
                              timeInMonday = rsTimeIn.getString("time_in");

                              if(timeInMonday==null){
                                  System.out.println("No Data");
                              }else{
                                  System.out.println("clock in: " + timeInMonday);
                              }               
                            }

                       ///////////////////////////////  

                     } catch (SQLException e ) {
                         System.out.println(e);
                     } finally {
                         if (stmt != null) { stmt.close(); }
                     }

                } catch (Exception e) {
                    System.out.println("Connection Failed");
                }
    }
}

最佳答案

我不确定我是否完全理解问题的详细信息,但如果我是正确的,您需要工作时数。您可以使用以下代码来实现此目的:

import java.util.*;
import java.lang.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.concurrent.TimeUnit;

class HoursWorked {
    public static void main (String[] args) throws java.lang.Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:SS");
        Date timeIn = sdf.parse("01:00:00");
        Date timeOut = sdf.parse("09:30:00");
        long workHourInMillis = timeOut.getTime() - timeIn.getTime();
        System.out.println("Hours worked: " + TimeUnit.MILLISECONDS.toHours(workHourInMillis));
    }
}

关于java - 如何使用java在SQL中查找两个时间值的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491076/

相关文章:

sql-server - 根据不同的事件选择最早的日期并加入其他表

javascript - 防止sequelize软删除在其他地方引用的行

Java Eclipse Swing 设计

java - VBO Java LWJGL 带鼠标+键盘

mysql - Limit With order by 在mysql中只需要10条记录需要很长时间

sql-server - sql排序依据?您如何选择添加的最后 25 行?

Java SQL "syntax error or access violation"

java - 如何毫不费力地分发matrix-toolkits-java(MTJ)?

c# - 在 C# 中存储查询还是在 Postgres 中使用存储函数?

sql - 在 MySQL 中存储图像