我使用jdbc将数据从远程sqlserver提取到本地mysql服务器。
在远程sqlserver服务器中,我有2列
Name Count
在本地mysql中我有3列
Name Count Time_stamp
time_stamp为 datetime数据类型
我使用下面的插入代码段
来提取数据while (rs.next()) {
String zoneName = rs.getString("Name");
int zonecount = rs.getInt("Count");
String insertSql = "insert into occupancy.occupancy_phase_2(Name,Count)values('"+zoneName+"',"+zonecount+")";
pstmt = con2.prepareStatement(insertSql);
pstmt.executeUpdate();
我想在每次运行时为插入查询添加时间戳。
我该怎么做。
答案 0 :(得分:1)
另一种选择是在mysql表中使用“timestamp”类型,它将由mysql自动填充。
例如,
create table if not exists blammo
(
Name varchar(250),
Count int,
last_updated timestamp
);
然后只需将值插入Name和Count。
例如,
insert into blammo
(Name, Count) values ('kapowzie', 17);
每次行更改时,时间戳字段都会更新,除非您将其设置为当前值。有一种方法可以定义列以禁用自动更新,但我不记得它的语法。
有关详细信息,请查看MySql Reference
答案 1 :(得分:0)
您可以使用mysql的NOW()函数获取当前日期并插入它(这里我假设数据库服务器与应用程序服务器位于同一时区)
您可以使用以下查询字符串
String insertSql =
"insert into occupancy.occupancy_phase_2(Name,Count,Time_stamp)values('"+zoneName+"',"+zonecount+", Now())";
您也可以直接给出值而不是指定列
String insertSql =
"insert into occupancy.occupancy_phase_2 values('"+zoneName+"',"+zonecount+", Now())";
注意:强>
使用预准备语句时,使用PreparedStatement
实例设置查询参数,如下所示
String insertSql =
"insert into occupancy.occupancy_phase_2 values(?,?, Now())";
PreparedStatement ps = connection.prepareStatement(insertSql);
ps.setString(1, zoneName);
ps.setInt(2, zonecount);