到目前为止,我还没有找到一个明确的答案。
我想知道SQL类型DATETIME和java类型的等效是什么,使用PreparedStatement。
我找到了:http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm
但是它声明SQL类型"DATETIME"与SQL相同。日期,但是当查看SQL日期文档(http://download.oracle.com/javase/7/docs/api/java/sql/Date.html)时,它说时间被截断(全为零)。
我想要的是能够指定一个preparedStatement.setDateTime()
或其他的。
我看到的唯一另一种方法是使用时间戳,但这需要我更改列类型,而我无法想象其他人以前从未遇到过这个问题?
提示吗?
编辑:我使用MYSQL
SQL包有三种日期/时间类型:
-
java.sql.Date
-只有日期(没有时间部分) -
java.sql.Time
-只有时间(没有日期部分) -
java.sql.Timestamp
-日期和时间
你想要最后一个: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);
相当于MS SQL Server或MySQL DATETIME数据类型或Oracle DATE数据类型的是java.sql.Timestamp.
在Java中,我们有Java .util.Date来处理日期和时间值。
在SQL中,通常有date(只有日期),Time(只有时间)和DateTime/Timestamp(日期和时间)。
在Java程序中,通常会有Java .util。日期,因此每次在PreparedStatements中设置Date/Times/DateTimes时,总是根据数据库选择您需要的那个。
我有一个类似的问题,我的Mysql有SQL日期和本地在我的应用程序我只有日期
我像这样解决
java.sql.Date dataStartSql = new java.sql.Date(start.getTime());
之后正常使用setDate,我使用getTimestamp来检索第一个值。