在java.sql中的date时间等效? (是否有一个java.sql.datetime?)

到目前为止,我还没有find明确的答案。

我想知道使用PreparedStatement SQLtypesDATETIME和javatypes是什么。

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

但是它声明SQLtypes“DATETIME”与sql.date相同,但是在查看SQLdate文档时( http://download.oracle.com/javase/7/docs/api/java/sql/Date。它说时间被截断(全零)。

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

我看到的唯一的另一种方式是使用时间戳,但这将需要我改变列的types,而我无法想象别人之前从来没有这个问题?

任何提示?

编辑:我正在使用MYSQL。

java.sql包有三种date/时间types:

  • java.sql.Date – 仅限date(无时间部分)
  • java.sql.Time – 只有一个时间(没有date部分)
  • java.sql.Timestamp – date和时间

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

如果使用这些types,则不需要调用特定的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); 

MS SQL Server或MySQL DATETIME数据types或Oracle DATE数据types的等效值为java.sql.Timestamp。

我有一个类似的问题,我的Mysql SQLdate和本地在我的应用程序,我只有date

我解决了这个问题

 java.sql.Date dataStartSql = new java.sql.Date(start.getTime()); 

之后,通常使用setDate,并使用getTimestamp来检索第一个值。

其中start是一个Date对象。

在Java中,我们有java.util.Date来处理date和时间值。

在SQL中,通常具有date(仅date),时间(仅时间)和date时间/时间戳(date和时间)。

在你的Java程序中,通常你总是拥有java.util.Date,所以每当你在PreparedStatements中设置date/时间/date时间,根据数据库,总是select一个你需要的。