A datetime equivalent in java.sql ? (is there a java.sql.datetime ?)

JavaMysqlSqlDatetimeJdbc

Java Problem Overview


So far, I have not found a clear answer to this.

I'd like to know what the equivalent is for a SQL type DATETIME and the java type, using a PreparedStatement.

I have found: http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm

But it states that SQL type "DATETIME" is the same as sql.date, but when looking at the SQL date docs (http://download.oracle.com/javase/7/docs/api/java/sql/Date.html), it says the time is truncated (all zeros).

What I want is to be able to specify a preparedStatement.setDateTime() or some sort.

The only other way I see is using a timestamp, but that would require me to change the column type, while I cannot imagine someone else never had this problem before?

Any hints?

Edit: I am using MYSQL.

Java Solutions


Solution 1 - Java

The java.sql package has three date/time types:

You want the last one: java.sql.Timestamp.

If you are using these types, you don't need to call a specific setter; just use:

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

Solution 2 - Java

The equivalent of MS SQL Server or MySQL DATETIME data type or Oracle DATE data type is java.sql.Timestamp.

Solution 3 - Java

In Java we have java.util.Date to handle both Date and Time values.

In SQL, you have commonly Dates (only dates), Time (only time) and DateTime/Timestamp (date and time).

In your Java program, usually you'll always have java.util.Date, so each time you're setting Dates/Times/DateTimes in PreparedStatements, always choose exactly which one you need, according to the database.

Solution 4 - Java

I had a similar problem with my Mysql having SQL date and locally in my app i only had Date

I solved like this

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

After that used the setDate normally, and I used a getTimestamp to retrive the first value.

where start is a Date object.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionStefan HendriksView Question on Stackoverflow
Solution 1 - JavaBohemianView Answer on Stackoverflow
Solution 2 - JavaOlafView Answer on Stackoverflow
Solution 3 - JavaevertonView Answer on Stackoverflow
Solution 4 - JavaCristiano FontesView Answer on Stackoverflow