@@ -154,7 +154,7 @@ protected Accessor createAccessor(ColumnMetaData columnMetaData,
154
154
case PRIMITIVE_INT :
155
155
case INTEGER :
156
156
case NUMBER :
157
- return new TimeFromNumberAccessor (getter , localCalendar );
157
+ return new TimeFromNumberAccessor (getter , localCalendar , columnMetaData . precision );
158
158
case JAVA_SQL_TIME :
159
159
return new TimeAccessor (getter , localCalendar );
160
160
default :
@@ -165,11 +165,11 @@ protected Accessor createAccessor(ColumnMetaData columnMetaData,
165
165
case PRIMITIVE_LONG :
166
166
case LONG :
167
167
case NUMBER :
168
- return new TimestampFromNumberAccessor (getter , localCalendar );
168
+ return new TimestampFromNumberAccessor (getter , localCalendar , columnMetaData . precision );
169
169
case JAVA_SQL_TIMESTAMP :
170
- return new TimestampAccessor (getter , localCalendar );
170
+ return new TimestampAccessor (getter , localCalendar , columnMetaData . precision );
171
171
case JAVA_UTIL_DATE :
172
- return new TimestampFromUtilDateAccessor (getter , localCalendar );
172
+ return new TimestampFromUtilDateAccessor (getter , localCalendar , columnMetaData . precision );
173
173
default :
174
174
throw new AssertionError ("bad " + columnMetaData .type .rep );
175
175
}
@@ -241,11 +241,11 @@ protected Accessor createAccessor(ColumnMetaData columnMetaData,
241
241
/** Accesses a timestamp value as a string.
242
242
* The timestamp is in SQL format (e.g. "2013-09-22 22:30:32"),
243
243
* not Java format ("2013-09-22 22:30:32.123"). */
244
- private static String timestampAsString (long v , Calendar calendar ) {
244
+ private static String timestampAsString (long v , Calendar calendar , int precision ) {
245
245
if (calendar != null ) {
246
246
v -= calendar .getTimeZone ().getOffset (v );
247
247
}
248
- return DateTimeUtils .unixTimestampToString (v );
248
+ return DateTimeUtils .unixTimestampToString (v , precision );
249
249
}
250
250
251
251
/** Accesses a date value as a string, e.g. "2013-09-22". */
@@ -255,11 +255,11 @@ private static String dateAsString(int v, Calendar calendar) {
255
255
}
256
256
257
257
/** Accesses a time value as a string, e.g. "22:30:32". */
258
- private static String timeAsString (int v , Calendar calendar ) {
258
+ private static String timeAsString (int v , Calendar calendar , int precision ) {
259
259
if (calendar != null ) {
260
260
v -= calendar .getTimeZone ().getOffset (v );
261
261
}
262
- return DateTimeUtils .unixTimeToString (v );
262
+ return DateTimeUtils .unixTimeToString (v , precision );
263
263
}
264
264
265
265
/** Implementation of {@link Cursor.Accessor}. */
@@ -955,10 +955,12 @@ protected Number getNumber() throws SQLException {
955
955
*/
956
956
static class TimeFromNumberAccessor extends NumberAccessor {
957
957
private final Calendar localCalendar ;
958
+ private final int precision ;
958
959
959
- TimeFromNumberAccessor (Getter getter , Calendar localCalendar ) {
960
+ TimeFromNumberAccessor (Getter getter , Calendar localCalendar , int precision ) {
960
961
super (getter , 0 );
961
962
this .localCalendar = localCalendar ;
963
+ this .precision = precision ;
962
964
}
963
965
964
966
@ Override public Object getObject () throws SQLException {
@@ -986,7 +988,7 @@ static class TimeFromNumberAccessor extends NumberAccessor {
986
988
if (v == null ) {
987
989
return null ;
988
990
}
989
- return timeAsString (v .intValue (), null );
991
+ return timeAsString (v .intValue (), null , this . precision );
990
992
}
991
993
992
994
protected Number getNumber () throws SQLException {
@@ -1013,10 +1015,12 @@ protected Number getNumber() throws SQLException {
1013
1015
*/
1014
1016
static class TimestampFromNumberAccessor extends NumberAccessor {
1015
1017
private final Calendar localCalendar ;
1018
+ private final int precision ;
1016
1019
1017
- TimestampFromNumberAccessor (Getter getter , Calendar localCalendar ) {
1020
+ TimestampFromNumberAccessor (Getter getter , Calendar localCalendar , int precision ) {
1018
1021
super (getter , 0 );
1019
1022
this .localCalendar = localCalendar ;
1023
+ this .precision = precision ;
1020
1024
}
1021
1025
1022
1026
@ Override public Object getObject () throws SQLException {
@@ -1052,7 +1056,7 @@ static class TimestampFromNumberAccessor extends NumberAccessor {
1052
1056
if (v == null ) {
1053
1057
return null ;
1054
1058
}
1055
- return timestampAsString (v .longValue (), null );
1059
+ return timestampAsString (v .longValue (), null , this . precision );
1056
1060
}
1057
1061
1058
1062
protected Number getNumber () throws SQLException {
@@ -1155,7 +1159,8 @@ static class TimeAccessor extends ObjectAccessor {
1155
1159
return null ;
1156
1160
}
1157
1161
final int unix = DateTimeUtils .sqlTimeToUnixTime (time , localCalendar );
1158
- return timeAsString (unix , null );
1162
+ // java.sql.Time only supports a precision of 0
1163
+ return timeAsString (unix , null , 0 );
1159
1164
}
1160
1165
1161
1166
@ Override public long getLong () throws SQLException {
@@ -1178,10 +1183,12 @@ static class TimeAccessor extends ObjectAccessor {
1178
1183
*/
1179
1184
static class TimestampAccessor extends ObjectAccessor {
1180
1185
private final Calendar localCalendar ;
1186
+ private final int precision ;
1181
1187
1182
- TimestampAccessor (Getter getter , Calendar localCalendar ) {
1188
+ TimestampAccessor (Getter getter , Calendar localCalendar , int precision ) {
1183
1189
super (getter );
1184
1190
this .localCalendar = localCalendar ;
1191
+ this .precision = precision ;
1185
1192
}
1186
1193
1187
1194
@ Override public Timestamp getTimestamp (Calendar calendar ) throws SQLException {
@@ -1220,7 +1227,7 @@ static class TimestampAccessor extends ObjectAccessor {
1220
1227
}
1221
1228
final long unix =
1222
1229
DateTimeUtils .sqlTimestampToUnixTimestamp (timestamp , localCalendar );
1223
- return timestampAsString (unix , null );
1230
+ return timestampAsString (unix , null , this . precision );
1224
1231
}
1225
1232
1226
1233
@ Override public long getLong () throws SQLException {
@@ -1241,11 +1248,13 @@ static class TimestampAccessor extends ObjectAccessor {
1241
1248
*/
1242
1249
static class TimestampFromUtilDateAccessor extends ObjectAccessor {
1243
1250
private final Calendar localCalendar ;
1251
+ private final int precision ;
1244
1252
1245
1253
TimestampFromUtilDateAccessor (Getter getter ,
1246
- Calendar localCalendar ) {
1254
+ Calendar localCalendar , int precision ) {
1247
1255
super (getter );
1248
1256
this .localCalendar = localCalendar ;
1257
+ this .precision = precision ;
1249
1258
}
1250
1259
1251
1260
@ Override public Timestamp getTimestamp (Calendar calendar ) throws SQLException {
@@ -1282,7 +1291,7 @@ static class TimestampFromUtilDateAccessor extends ObjectAccessor {
1282
1291
return null ;
1283
1292
}
1284
1293
final long unix = DateTimeUtils .utilDateToUnixTimestamp (date , localCalendar );
1285
- return timestampAsString (unix , null );
1294
+ return timestampAsString (unix , null , this . precision );
1286
1295
}
1287
1296
1288
1297
@ Override public long getLong () throws SQLException {
0 commit comments