我有一个表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之间的时间(以分钟为单位)。我该怎么做?也许通过使用触发器?感谢。
答案 0 :(得分:0)
首先,如果你的问题是关于SQL,你不需要在游戏中存储游戏长度。
使用SQL查询检索日期时,您应始终能够计算它:
SELECT t.*, TIME_TO_SEC(TIMEDIFF(date_start , date_finished)) / 60 as game_lenght
FROM myTable t
如果要计算数据库之外的游戏长度,则需要更改标记。