break;
case DATE:
Date date = rs.getDate(column);
// If date is null it is handled later.
if (date != null) {
GregorianCalendar gc =
new GregorianCalendar(TimeZone.getTimeZone("GMT"));
// Set the year, month and date in the gregorian calendar.
// Use the 'set' method with those parameters, and not the 'setTime'
// method with the date parameter, since the Date object contains the
// current time zone and it's impossible to change it to 'GMT'.
gc.set(date.getYear() + 1900, date.getMonth(), date.getDate());
value = new DateValue(gc);
}
break;
case DATETIME:
Timestamp timestamp = rs.getTimestamp(column);
// If timestamp is null it is handled later.
if (timestamp != null) {
GregorianCalendar gc =
new GregorianCalendar(TimeZone.getTimeZone("GMT"));
// Set the year, month, date, hours, minutes and seconds in the
// gregorian calendar. Use the 'set' method with those parameters,
// and not the 'setTime' method with the timestamp parameter, since
// the Timestamp object contains the current time zone and it's
// impossible to change it to 'GMT'.
gc.set(timestamp.getYear() + 1900, timestamp.getMonth(),
timestamp.getDate(), timestamp.getHours(), timestamp.getMinutes(),
timestamp.getSeconds());
// Set the milliseconds explicitly, as they are not saved in the
// underlying date.
gc.set(Calendar.MILLISECOND, timestamp.getNanos() / 1000000);
value = new DateTimeValue(gc);
}
break;
case TIMEOFDAY:
Time time = rs.getTime(column);
// If time is null it is handled later.
if (time != null) {
GregorianCalendar gc =
new GregorianCalendar(TimeZone.getTimeZone("GMT"));
// Set the hours, minutes and seconds of the time in the gregorian
// calendar. Set the year, month and date to be January 1 1970 like
// in the Time object.
// Use the 'set' method with those parameters,
// and not the 'setTime' method with the time parameter, since
// the Time object contains the current time zone and it's
// impossible to change it to 'GMT'.
gc.set(1970, Calendar.JANUARY, 1, time.getHours(), time.getMinutes(),
time.getSeconds());
// Set the milliseconds explicitly, otherwise the milliseconds from
// the time the gc was initialized are used.
gc.set(GregorianCalendar.MILLISECOND, 0);
value = new TimeOfDayValue(gc);
}
break;
default:
String colValue = rs.getString(column);