Date/time type handlers are located in the net.hasor.dbvisitor.types.handler.time package.
Common Handlers
| Handler | Java Type | Purpose |
|---|
LocalDateTimeTypeHandler | java.time.LocalDateTime | Reads/writes LocalDateTime data via getObject/setObject |
LocalTimeTypeHandler | java.time.LocalTime | Reads/writes LocalTime data via getObject/setObject |
OffsetDateTimeTypeHandler | java.time.OffsetDateTime | Reads/writes OffsetDateTime data via getObject/setObject |
OffsetTimeTypeHandler | java.time.OffsetTime | Reads/writes OffsetTime data via getObject/setObject |
SqlDateTypeHandler | java.sql.Date | Reads/writes Date data via getObject/setObject |
SqlTimestampTypeHandler | java.sql.Timestamp | Reads/writes Timestamp data via getObject/setObject |
SqlTimeTypeHandler | java.sql.Time | Reads/writes Time data via getObject/setObject |
Using java.util.Date
| Handler | Java Type | Purpose |
|---|
SqlDateAsDateHandler | java.util.Date | Reads/writes java.util.Date data via getDate/setDate |
SqlTimeAsDateTypeHandler | java.util.Date | Reads/writes java.util.Date data via getTime/setTime (date portion is discarded) |
SqlTimestampAsDateTypeHandler | java.util.Date | Reads/writes java.util.Date data via getTimestamp/setTimestamp |
Using java.time.Year
| Handler | Java Type | Purpose |
|---|
IntegerAsYearTypeHandler | java.time.Year | Reads/writes a numeric value representing the year |
StringAsYearTypeHandler | java.time.Year | Reads/writes a string-form numeric value representing the year |
SqlTimestampAsYearTypeHandler | java.time.Year | Reads/writes Year data via getTimestamp/setTimestamp (month/day/time are discarded) |
Using java.time.YearMonth
| Handler | Java Type | Purpose |
|---|
IntegerAsYearMonthTypeHandler | java.time.YearMonth | Reads/writes a number where the last 2 digits represent the month, the rest represents the year. Values under 2 digits are treated as month. 0 means 0000-01 |
StringAsYearMonthTypeHandler | java.time.YearMonth | String format yyyy-MM |
SqlTimestampAsYearMonthTypeHandler | java.time.YearMonth | Reads/writes YearMonth data via getTimestamp/setTimestamp (day/time are discarded) |
Using java.time.Month
| Handler | Java Type | Purpose |
|---|
IntegerAsMonthTypeHandler | java.time.Month | Reads/writes a number between 1 and 12 representing the month |
StringAsMonthTypeHandler | java.time.Month | String-form number representing the month, value range 1-12 |
SqlTimestampAsMonthTypeHandler | java.time.Month | Reads/writes Month data via getTimestamp/setTimestamp (year/day/time are discarded) |
Using java.time.MonthDay
| Handler | Java Type | Purpose |
|---|
IntegerAsMonthDayTypeHandler | java.time.MonthDay | Reads/writes a 4-digit number where the first 2 digits represent the month and the last 2 represent the day |
StringAsMonthDayTypeHandler | java.time.MonthDay | String format MM-dd (e.g. 01-03) |
SqlTimestampAsMonthDayTypeHandler | java.time.MonthDay | Reads/writes MonthDay data via getTimestamp/setTimestamp (year/time are discarded) |
Type Conversions
| Handler | Java Type | Purpose |
|---|
SqlTimestampAsLocalDateTimeTypeHandler | java.time.LocalDateTime | Reads/writes LocalDateTime via getTimestamp/setTimestamp |
SqlTimestampAsLocalDateTypeHandler | java.time.LocalDate | Reads/writes LocalDate via getTimestamp/setTimestamp, missing time is filled with 00:00 |
SqlTimestampAsLocalTimeTypeHandler | java.time.LocalTime | Reads/writes LocalTime via getTimestamp/setTimestamp, missing date is filled with 0000-01-01 |
LocalDateTimeAsLocalTimeTypeHandler | java.time.LocalTime | Reads/writes LocalDateTime via getObject/setObject, auto-converts to LocalTime, missing date is filled with 0000-01-01 |
LocalDateTimeAsLocalDateTypeHandler | java.time.LocalDate | Reads/writes LocalDateTime via getObject/setObject, auto-converts to LocalDate, missing time is filled with 00:00 |
JapaneseDateAsSqlDateTypeHandler | java.time.chrono.JapaneseDate | Reads/writes JapaneseDate data via getDate/setDate |
OffsetDateTimeAsZonedDateTimeTypeHandler | java.time.ZonedDateTime | Reads/writes OffsetDateTime via getObject/setObject, auto-converts to ZonedDateTime |
SqlTimestampAsInstantTypeHandler | java.time.Instant | Reads/writes Instant data via getTimestamp/setTimestamp |
Automatic Timezone Conversion
Automatic timezone conversion — timezone reads and writes are converted to UTC.
| Handler | Java Type | Purpose |
|---|
SqlTimestampAsUTCOffsetDateTimeTypeHandler | java.time.OffsetDateTime | Automatic timezone conversion, reads/writes Timestamp data using OffsetDateTime |
SqlTimestampAsUTCOffsetTimeTypeHandler | java.time.OffsetTime | Automatic timezone conversion, reads/writes Timestamp data using OffsetTime |
Special Support
| Handler | Java Type | Purpose |
|---|
JulianDayTypeHandler | java.time.LocalDate | Stores dates using Julian Day Number, supports BCE dates. Stored as BIGINT in the database |
PgDateTypeHandler | java.time.LocalDate | PostgreSQL DATE type specific, supports BCE dates (BC suffix format). Annotated with @NoCache |
JulianDayTypeHandler
Julian Day Number is a date representation method commonly used in astronomy, counting continuously from January 1, 4713 BCE. Stored as BIGINT in the database, it avoids conversion issues between different calendar systems.
Use this when business dates need integer storage. The handler uses integer conversion algorithms and does not guarantee the entire LocalDate year range; constrain the business range and verify round-trip conversion.
PgDateTypeHandler
PostgreSQL supports using a BC suffix to represent BCE dates (e.g. 0100-01-01 BC represents 100 BCE). Java LocalDate uses ISO 8601 year representation:
| Java Year | Meaning |
|---|
| Year 1 | 1 CE (1 AD) |
| Year 0 | 1 BCE (1 BC) |
| Year -1 | 2 BCE (2 BC) |
| Year -99 | 100 BCE (100 BC) |
BC leap days, native database DATE limits, and legacy date conversions are additional boundaries; the year mapping alone does not guarantee lossless round trips for every historical date.