使用 TIMESTAMP 数据类型创建准备绑定插入语句

Creating a prepare-bind insert statement with a TIMESTAMP datatype

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

我有以下 table:

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。我应该怎么做?

您的 SQL 的 TIMESTAMP 对应的 Java 类型很可能是 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");