在MySQL中一起计算2列

时间:2014-03-05 13:23:18

标签: mysql

感谢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

2 个答案:

答案 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