@@ -328,47 +328,9 @@ protected void setTimestampParameter(final ThreadContext context,
328
328
final Connection connection , final PreparedStatement statement ,
329
329
final int index , IRubyObject value ,
330
330
final IRubyObject attribute , final int type ) throws SQLException {
331
-
332
- if ( value instanceof RubyFloat ) {
333
- final double doubleValue = ( (RubyFloat ) value ).getValue ();
334
- if ( Double .isInfinite (doubleValue ) ) {
335
- setTimestampInfinity (statement , index , doubleValue );
336
- return ;
337
- }
338
- }
339
-
340
- RubyTime timeValue = toTime (context , value );
341
-
342
- final Timestamp timestamp ;
343
-
344
- if (timeValue .getDateTime ().getYear () > 0 ) {
345
- timeValue = timeInDefaultTimeZone (context , timeValue );
346
- DateTime dateTime = timeValue .getDateTime ();
347
- timestamp = new Timestamp (dateTime .getMillis ());
348
-
349
- if (timeValue .getNSec () > 0 ) timestamp .setNanos ((int ) (timestamp .getNanos () + timeValue .getNSec ()));
350
-
351
- statement .setTimestamp (index , timestamp , getCalendar (dateTime .getZone ()));
352
- }
353
- else {
354
- setTimestampBC (statement , index , timeValue );
355
- }
356
- }
357
-
358
- private static void setTimestampBC (final PreparedStatement statement ,
359
- final int index , final RubyTime timeValue ) throws SQLException {
360
- DateTime dateTime = timeValue .getDateTime ();
361
- @ SuppressWarnings ("deprecated" )
362
- Timestamp timestamp = new Timestamp (dateTime .getYear () - 1900 ,
363
- dateTime .getMonthOfYear () - 1 ,
364
- dateTime .getDayOfMonth (),
365
- dateTime .getHourOfDay (),
366
- dateTime .getMinuteOfHour (),
367
- dateTime .getSecondOfMinute (),
368
- dateTime .getMillisOfSecond () * 1_000_000 + (int ) timeValue .getNSec ()
369
- );
370
-
371
- statement .setObject (index , timestamp );
331
+ // PGJDBC uses strings internally anyway, so using Timestamp doesn't do any good
332
+ String tsString = PgDateTimeUtils .timestampValueToString (context , value , null , true );
333
+ statement .setObject (index , tsString , Types .OTHER );
372
334
}
373
335
374
336
private static void setTimestampInfinity (final PreparedStatement statement ,
@@ -390,7 +352,8 @@ protected void setTimeParameter(final ThreadContext context,
390
352
final int index , IRubyObject value ,
391
353
final IRubyObject attribute , final int type ) throws SQLException {
392
354
// to handle more fractional second precision than (default) 59.123 only
393
- super .setTimestampParameter (context , connection , statement , index , value , attribute , type );
355
+ String timeStr = DateTimeUtils .timeString (context , value , DateTimeZone .UTC , true );
356
+ statement .setObject (index , timeStr , Types .OTHER );
394
357
}
395
358
396
359
@ Override
0 commit comments