在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一个你需要的。