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

时间:2011-07-21 14:35:31

标签: 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。

4 个答案:

答案 0 :(得分:95)

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

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

如果您使用这些类型,则无需致电特定的设定者;只需使用:

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); 

答案 1 :(得分:4)

相当于MS SQL Server或MySQL DATETIME数据类型或Oracle DATE数据类型是java.sql.Timestamp。

答案 2 :(得分:1)

我有一个类似的问题,我的Mysql有SQL日期,在我的应用程序本地只有日期

我这样解决了

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

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

其中start是Date对象。

答案 3 :(得分:1)

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

在SQL中,您通常有日期(仅限日期),时间(仅限时间)和日期时间/时间戳(日期和时间)。

在你的Java程序中,通常你总是有java.util.Date,所以每次你在PreparedStatements中设置Dates / Times / DateTimes时,总是根据数据库选择你需要的那个。