java.sql中的日期时间等价物?(有java.sql.datetime吗?)

Ste*_*iks 62 java mysql sql datetime jdbc

到目前为止,我还没有找到明确答案.

我想知道使用PreparedStatement对SQL类型DATETIME和java类型的等价物.

我发现:http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm

但是它声明SQL类型"DATETIME"与sql.date相同,但在查看SQL date docs时(http://download.oracle.com/javase/7/docs/api/java/sql/Date. html),它说时间被截断(全为零).

我想要的是能够指定一种preparedStatement.setDateTime()或某种类型.

我看到的唯一另一种方法是使用时间戳,但这需要我更改列类型,而我无法想象以前其他人从未遇到过这个问题?

任何提示?

编辑:我正在使用MYSQL.

Boh*_*ian 108

java.sql包有三种日期/时间类型:

你想要最后一个:java.sql.Timestamp.

如果您使用这些类型,则无需调用特定的setter; 只需使用:

java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
// The JDBC driver knows what to do with a java.sql type:
preparedStatement.setObject(param); 
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这就是我想要的.您是如何发现这些类型与某些SQL类型匹配的?我有点困扰,因为我的查询使用NOW()工作正常,但在java中没有使用"now"的日期实例并将其用作时间戳? (2认同)
  • @FunsukWangadu因为`java.sql.Date`是`java.util.Date`的子类(就像`java.sql.Time`),所以尽管它不是"时刻",但它继承了所有这些方法就像它一样.这是java API中的一个设计缺陷. (2认同)

Ola*_*laf 5

MS SQL Server或MySQL DATETIME数据类型或Oracle DATE数据类型的等效项是java.sql.Timestamp。