在两个DATETIME之间插入时间

时间:2014-09-06 21:07:08

标签: mysql sql

我有一个表db_mafia.game:

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之间的时间(以分钟为单位)。我该怎么做?也许通过使用触发器?感谢。

1 个答案:

答案 0 :(得分:0)

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

使用SQL查询检索日期时,您应始终能够计算它:

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

如果要计算数据库之外的游戏长度,则需要更改标记。