Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6, 10.3.1.4
-
None
-
Release Note Needed
Description
In embedded the java.sql.Time object returned from ResultSet.getTime() for a SQL TIMESTAMP object has its millisecond value for the time portion equal to that for the java.sql.Timestamp value.
In client the millisecond time value for such a value is always set to zero.
Note a Derby SQL TIME value has by definition resolution of only a second so its millisecond value is always zero,
but java.sql.Time is not a direct mapping to the SQL Type, it's a JDBC type, so when converting from a SQL TIMESTAMP
it should retain the precision.
The new test lang.TimeHandlingTest has this assert code that shows the problem, one of its calls will be commented out
with a comment with this bug number.
private void assertTimeEqual(Time tv, Timestamp tsv)
{ cal.clear(); cal.setTime(tv); int hour = cal.get(Calendar.HOUR_OF_DAY); int min = cal.get(Calendar.MINUTE); int sec = cal.get(Calendar.SECOND); int ms = cal.get(Calendar.MILLISECOND); // Check the time portion is set to the same as tv cal.clear(); cal.setTime(tsv); assertEquals(hour, cal.get(Calendar.HOUR_OF_DAY)); assertEquals(min, cal.get(Calendar.MINUTE)); assertEquals(sec, cal.get(Calendar.SECOND)); assertEquals(ms, cal.get(Calendar.MILLISECOND)); <<<<<<<<<<<<< FAILS HERE }Attachments
Attachments
Issue Links
- is part of
-
DERBY-2034 Tracking of bugs that lead to incorrect results being stored or returned to the client
- Closed
- is related to
-
DERBY-2602 TIMESTAMP value is truncated when return to client
- Closed
- relates to
-
DERBY-889 with client getTimestamp on a TIME column will print the date 1900-01-01 instead of the current date
- Closed