2014-09-06 186 views
-1

我有一个表db_mafia.game:插入时间之间有两个DATETIME

CREATE TABLE db_mafia.game (
id int(11) NOT NULL AUTO_INCREMENT, 
date_start datetime NOT NULL, 
date_finished datetime NOT NULL, 
id_header int(11) NOT NULL, 
game_lenght time NOT NULL, 
PRIMARY KEY (id) 
) 
    ENGINE = INNODB 
    AUTO_INCREMENT = 51 
    CHARACTER SET utf8 
    COLLATE utf8_general_ci; 

,我在这个表中的数据插入来自JAVA

try { 
    Class.forName("com.mysql.jdbc.Driver"); 
       Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/db_mafia","root","qwerty"); 

            String sql = "INSERT INTO game (date_start, date_finished, id_header, game_lenght) values (?,?,?,?)"; 
    pst=con.prepareStatement(sql); 
    pst.setString(1, jTextField2.getText()); 
    pst.setString(2, jTextField3.getText()); 
    pst.setString(3, jTextField1.getText()); 
    pst.setString(4, ?????????); 
    pst.execute(); 

    JOptionPane.showMessageDialog(null, "Игра завершена, до новых встреч " +jLabel1.getText()); 

    } 

,但我想在列插入game_lenght之间的时间date_finished和date_start(以分钟为单位)。我该怎么做?也许通过使用触发器?谢谢。

回答

0

首先,如果您的问题是关于SQL,您不需要在表中存储游戏长度。

你应该总是能够来计算的话,当你检索与SQL查询的日期:如果你要计算的数据库之外的游戏长度

SELECT t.*, TIME_TO_SEC(TIMEDIFF(date_start , date_finished))/60 as game_lenght 
FROM myTable t 

,那么你就需要改变标签。