【问题标题】:Convert Java Timestamp to MySQL timestamp vice versa将 Java 时间戳转换为 MySQL 时间戳,反之亦然
【发布时间】:2012-01-18 13:15:48
【问题描述】:

如何将 Java 时间戳(时间戳数据类型)转换为 MySQL 时间戳,反之亦然?

【问题讨论】:

  • 用 Java 做起来并不复杂。您使用哪个框架来访问您的数据库?
  • 我暂时不用任何框架
  • 请向我们展示给您带来问题的代码,并告诉我们问题所在。正如答案所说,不需要转换应该java.sql.TimeStamp 应该直接映射到 MySQL TIMESTAMP 类型。

标签: java date time timestamp


【解决方案1】:

如果您使用 JDBC API 访问数据库,并且您使用 PreparedStatement 来执行 SQL INSERT 语句,那么您只需将时间戳设置为 PreparedStatement 的参数即可:

Timestamp ts = ...; // wherever you get this from

PreparedStatement ps = connection.prepareStatement("INSERT INTO MYTABLE (ts) VALUES (?)");
ps.setTimestamp(1, ts);
ps.executeUpdate();

同样,当您执行返回时间戳的查询时,通过调用getTimestampResultSet 获取它。示例:

Timestamp result = null;

Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("SELECT ts FROM MYTABLE WHERE ...");
if (rs.next()) {
    result = rs.getTimestamp(1);
}

请参阅JDBC Tutorial

【讨论】:

  • 谢谢,我想做的是,当我从 MySQL 加载数据时,我想将其设置为在 mysql 中具有 ctime (TIMESTAMP) 和在 java 中具有 ctime (Timestamp) 的对象跨度>
  • @bn,如果您使用 JDBC ResultSet 提取数据,您将需要对其使用 getTimestamp() 方法。
【解决方案2】:

据我从 MySQL 文档中看到的,java.sql.Timestamp 应该可以工作,如果你 read 它来自或 write 它到数据库中的 TIMESTAMP 字段。所以你不需要做任何转换。

【讨论】:

    【解决方案3】:

    如果不详细说明您遇到的问题,这将是一个很难回答的问题。但是,如果您使用预准备语句,Java 会相对简单。您的代码将如下所示:

    Connection conn = getConnection();
    PreparedStatement pStmt = conn.prepareStatement("UPDATE my_table SET my_column = ? WHERE id = ?");
    pStmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
    pStmt.setInt(2, 42);
    pStmt.executeUpdate();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-30
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多