将时间戳放在从远程sqlserver获取到本地mysql的数据上

时间:2013-07-11 14:20:08

标签: java mysql sql-server jdbc

我使用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();

我想在每次运行时为插入查询添加时间戳。

我该怎么做。

2 个答案:

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