1

我正在尝试使用 prepare-bind 语句插入一些行。其中一列是类型TIMESTAMP。如何将此列的变量与当前纪元时间绑定?

我有下表:

CREATE TABLE orders {
  user_id TEXT,
  order_time TIMESTAMP,
  order_id UUID DEFAULT gen_random_uuid(),
  order_details TEXT,
  PRIMARY KEY (user_id, order_time DESC, order_id),
  FOREIGN KEY (user_id) REFERENCES %s (user_id)
);

我有以下准备语句代码:

String stmt = "INSERT INTO orders " +
              "(user_id, order_time, order_details) " + 
              "VALUES (?, ?, ?);"
PreparedStatement p = connection.prepareStatement(stmt);

现在我正在尝试将当前纪元时间绑定System.currentTimeMillis()到此语句中的变量 2。我该怎么做?

4

1 回答 1

1

与您的 SQL 对应的 Java 类型TIMESTAMP很可能是java.sql.Timestamp. 您可以使用以下方法生成当前时间戳:

Timestamp timestamp = new Timestamp(System.currentTimeMillis());

因此,您准备好的语句代码可能如下所示:

String stmt = "INSERT INTO orders " +
              "(user_id, order_time, order_details) " + 
              "VALUES (?, ?, ?);"
PreparedStatement p = connection.prepareStatement(stmt);
p.setString(1, "Karthik");
p.setTimestamp(2, new Timestamp(System.currentTimeMillis()));
p.setString(3, "here is some order text");
于 2019-09-10T05:44:47.540 回答