感谢StackOverflow的一些好人,我将我的插入数据转换为MySQL数据。我的数据库中有以下列:
P_id INT NOT NULL AUTO_INCREMENT,
Date DATE NOT NULL,
Name VARCHAR(32) NOT NULL,
Address VARCHAR(32) NOT NULL,
Day_hours INT NOT NULL,
Day_minutes INT NOT NULL,
Km_to_address INT NOT NULL,
Time_to_address INT NOT NULL,
PRIMARY KEY(P_id)
当我将数据添加到数据库时,它会通过我的servlet:
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(connectionURL, "root", "");
String sql = "INSERT INTO Workdata (Date, Name, Address, Day_hours, Day_minutes, Km_to_address, Time_to_address) VALUES (?,?,?,?,?,?,?)";
PreparedStatement pst = connection.prepareStatement(sql);
pst.setString(1, Date);
pst.setString(2, Name);
pst.setString(3, Address);
pst.setString(4, Day_hours);
pst.setString(5, Day_minutes);
pst.setString(6, Km_to_address);
pst.setString(7, Time_to_address);
我的意思是我正在制作一个JQuery日历系统,我可以选择“从”日期和“到”日期。该时间间隔应该返回我工作的所有时间。所以这是从1天开始的工作:
Allday_hours Allday_minutes
job 1: 2 45
Job 2: 3 30
Job 3: 1 45
Job 4: 4 15
当计算这些小时和分钟时,它是11.35小时。所以现在我的问题来了。我该怎么计算呢?如果我只拿小时的总和就是10.当我拿Allday_minutes的总和时,它是135分钟。这意味着135分钟必须更改为1.35小时并添加到Allday_hours。因此结果将是:11.35小时。但我不知道怎么做?
我首先在数据库中创建了一个名为Allday_hours的列,并在其中进行了计算。在这里,我使用下面的查询来计算。但我可以理解这不是一个好主意。
SELECT *, (Day_hours + (Day_minutes / 100)) as Allday_hours FROM Workdata
如果您选择1个janurary到1个marts。然后我需要一个贯穿所有Day_hours的查询并获取总和。之后运行Allday_minutes并将它们转换为小时。后面的Allday_hours和Allday_minutes的SUM一起。 所以有人知道如何做到这一点,而不是虚构的专栏 最好的祝福 MADS
答案 0 :(得分:1)
为什么不将小时和分钟存储在TIME
类型列中,然后执行类似
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(day_time))) FROM workdata WHERE blabla
答案 1 :(得分:0)
将所有内容转换为分钟
然后将sum除以60,并将小数位截断小时,
和MOD总和60分钟。
选择
TRUNCATE(((SUM(Day_hours)* 60 + SUM(Day_minutes))/ 60),0)AS小时,
MOD((SUM(Day_hours)* 60 + SUM(Day_minutes)),60)AS分钟
来自Workdata