Wae*_*ada 21 java jdbc prepared-statement
我有以下查询:
INSERT INTO users (user_id, date_created) VALUES (?,?)
Run Code Online (Sandbox Code Playgroud)
我有以下准备好的声明
PreparedStatement insertUser = dbConnection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
insertUser.setInt(1, 7);
java.util.Date now = new java.util.Date(System.currentTimeMillis());
insertUser.setDate(2, new java.sql.Date((new Date(System.currentTimeMillis())).getTime()));
insertUser.executeUpdate();
Run Code Online (Sandbox Code Playgroud)
如果我检查数据库,我发现它只插入今天的日期而不是时间,所以它将是: 2011-07-29 00:00:00
我还应该把setDate()时间花在什么上呢?
Mau*_*res 37
而不是Date,您应该使用Timestamp和setTimestamp方法.
实际上你必须做那样的事情:
private static java.sql.Timestamp getCurrentTimeStamp() {
java.util.Date today = new java.util.Date();
return new java.sql.Timestamp(today.getTime());
}
Run Code Online (Sandbox Code Playgroud)
....
preparedStatement.setTimestamp(4,getCurrentTimeStamp());
Run Code Online (Sandbox Code Playgroud)
Java类型java.sql.Date将被规范化以仅表示SQL DATE时间而不是时刻的瞬间.从API文档:
为了符合SQL DATE的定义,java.sql.Date实例包含的毫秒值必须通过在与实例关联的特定时区中将小时,分钟,秒和毫秒设置为零来"标准化". .
规范化解释了为什么你看到00:00:00的时间.
如果要保留时间信息,请考虑使用可以表示日期和时间的Timestamp类.
显然,您还应该使用相应的SQL类型来定义表结构; 如果要在数据库中存储时间戳,请使用数据库首选的SQL类型.虽然某些数据库及其JDBC驱动程序可能允许您将时间戳存储在DATE列中,但建议使用等效SQL TIMESTAMP类型(如果可用).
| 归档时间: |
|
| 查看次数: |
35408 次 |
| 最近记录: |