java.sql.SQLException:java.sql.Time 的非法小时值“50”键入值“50:51:05”
java.sql.SQLException: Illegal hour value '50' for java.sql.Time type in value '50:51:05
当我尝试从 MySQL 检索时间并将其设置为 JLabel
时,出现错误。
java.sql.SQLException: Illegal hour value '50' for java.sql.Time type
in value '50:51:05.
谁能建议我如何解决这个问题?
代码如下
String sql = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ot)))"
+ " FROM attendance"
+ " WHERE department = '"+department+"'"
+ " AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";
st = con.createStatement();
rst = st.executeQuery(sql);
if(rst.next())
{
String time = rst.getString(1);
oTimeTemp.setText(time);
}
// if you want to use time as label
// you can use oTimeTemp if Date type of java.util, this have both time and date
if(rst.next())
{
// this Time string need to cast in util time
String time = rst.getString(1);
String time = time ;
DateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date date = sdf.parse(time);
oTimeTemp.setText(date); // in this date we have the time
}
我解决了。这是代码,
String sql = "SELECT SUM(TIME_TO_SEC(ot))"
+ " FROM attendance"
+ " WHERE department = '"+department+"'"
+ " AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";
st = con.createStatement();
rst = st.executeQuery(sql);
if(rst.next())
{
String time = rst.getString(1);
Double dTime = Double.valueOf(time);
int intTime = (int) dTime.doubleValue();
String nTime = calculateTime(intTime);
oTimeTemp.setText(nTime);
}
private static String calculateTime(int totalSecs)
{
int hours = totalSecs / 3600;
int minutes = (totalSecs % 3600) / 60;
int seconds = totalSecs % 60;
String timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds);
return timeString;
}
有一个mysql错误,按如下方式使用它会很好:
String sql = "SELECT concate(SEC_TO_TIME(SUM(TIME_TO_SEC(ot))),'')"
+ " FROM attendance"
+ " WHERE department = '"+department+"'"
+ " AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";
当我尝试从 MySQL 检索时间并将其设置为 JLabel
时,出现错误。
java.sql.SQLException: Illegal hour value '50' for java.sql.Time type in value '50:51:05.
谁能建议我如何解决这个问题?
代码如下
String sql = "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(ot)))"
+ " FROM attendance"
+ " WHERE department = '"+department+"'"
+ " AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";
st = con.createStatement();
rst = st.executeQuery(sql);
if(rst.next())
{
String time = rst.getString(1);
oTimeTemp.setText(time);
}
// if you want to use time as label
// you can use oTimeTemp if Date type of java.util, this have both time and date
if(rst.next())
{
// this Time string need to cast in util time
String time = rst.getString(1);
String time = time ;
DateFormat sdf = new SimpleDateFormat("hh:mm:ss");
Date date = sdf.parse(time);
oTimeTemp.setText(date); // in this date we have the time
}
我解决了。这是代码,
String sql = "SELECT SUM(TIME_TO_SEC(ot))"
+ " FROM attendance"
+ " WHERE department = '"+department+"'"
+ " AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";
st = con.createStatement();
rst = st.executeQuery(sql);
if(rst.next())
{
String time = rst.getString(1);
Double dTime = Double.valueOf(time);
int intTime = (int) dTime.doubleValue();
String nTime = calculateTime(intTime);
oTimeTemp.setText(nTime);
}
private static String calculateTime(int totalSecs)
{
int hours = totalSecs / 3600;
int minutes = (totalSecs % 3600) / 60;
int seconds = totalSecs % 60;
String timeString = String.format("%02d:%02d:%02d", hours, minutes, seconds);
return timeString;
}
有一个mysql错误,按如下方式使用它会很好:
String sql = "SELECT concate(SEC_TO_TIME(SUM(TIME_TO_SEC(ot))),'')"
+ " FROM attendance"
+ " WHERE department = '"+department+"'"
+ " AND date BETWEEN '"+dateChooser1+"' AND '"+dateChooser2+"'";