Skip to main content

Date/Time Types

Date/time type handlers are located in the net.hasor.dbvisitor.types.handler.time package.

Common Handlers​

HandlerJava TypePurpose
LocalDateTimeTypeHandlerjava.time.LocalDateTimeReads/writes LocalDateTime data via getObject/setObject
LocalTimeTypeHandlerjava.time.LocalTimeReads/writes LocalTime data via getObject/setObject
OffsetDateTimeTypeHandlerjava.time.OffsetDateTimeReads/writes OffsetDateTime data via getObject/setObject
OffsetTimeTypeHandlerjava.time.OffsetTimeReads/writes OffsetTime data via getObject/setObject
SqlDateTypeHandlerjava.sql.DateReads/writes Date data via getObject/setObject
SqlTimestampTypeHandlerjava.sql.TimestampReads/writes Timestamp data via getObject/setObject
SqlTimeTypeHandlerjava.sql.TimeReads/writes Time data via getObject/setObject

Using java.util.Date​

HandlerJava TypePurpose
SqlDateAsDateHandlerjava.util.DateReads/writes java.util.Date data via getDate/setDate
SqlTimeAsDateTypeHandlerjava.util.DateReads/writes java.util.Date data via getTime/setTime (date portion is discarded)
SqlTimestampAsDateTypeHandlerjava.util.DateReads/writes java.util.Date data via getTimestamp/setTimestamp

Using java.time.Year​

HandlerJava TypePurpose
IntegerAsYearTypeHandlerjava.time.YearReads/writes a numeric value representing the year
StringAsYearTypeHandlerjava.time.YearReads/writes a string-form numeric value representing the year
SqlTimestampAsYearTypeHandlerjava.time.YearReads/writes Year data via getTimestamp/setTimestamp (month/day/time are discarded)

Using java.time.YearMonth​

HandlerJava TypePurpose
IntegerAsYearMonthTypeHandlerjava.time.YearMonthReads/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
StringAsYearMonthTypeHandlerjava.time.YearMonthString format yyyy-MM
SqlTimestampAsYearMonthTypeHandlerjava.time.YearMonthReads/writes YearMonth data via getTimestamp/setTimestamp (day/time are discarded)

Using java.time.Month​

HandlerJava TypePurpose
IntegerAsMonthTypeHandlerjava.time.MonthReads/writes a number between 1 and 12 representing the month
StringAsMonthTypeHandlerjava.time.MonthString-form number representing the month, value range 1-12
SqlTimestampAsMonthTypeHandlerjava.time.MonthReads/writes Month data via getTimestamp/setTimestamp (year/day/time are discarded)

Using java.time.MonthDay​

HandlerJava TypePurpose
IntegerAsMonthDayTypeHandlerjava.time.MonthDayReads/writes a 4-digit number where the first 2 digits represent the month and the last 2 represent the day
StringAsMonthDayTypeHandlerjava.time.MonthDayString format MM-dd (e.g. 01-03)
SqlTimestampAsMonthDayTypeHandlerjava.time.MonthDayReads/writes MonthDay data via getTimestamp/setTimestamp (year/time are discarded)

Type Conversions​

HandlerJava TypePurpose
SqlTimestampAsLocalDateTimeTypeHandlerjava.time.LocalDateTimeReads/writes LocalDateTime via getTimestamp/setTimestamp
SqlTimestampAsLocalDateTypeHandlerjava.time.LocalDateReads/writes LocalDate via getTimestamp/setTimestamp, missing time is filled with 00:00
SqlTimestampAsLocalTimeTypeHandlerjava.time.LocalTimeReads/writes LocalTime via getTimestamp/setTimestamp, missing date is filled with 0000-01-01
LocalDateTimeAsLocalTimeTypeHandlerjava.time.LocalTimeReads/writes LocalDateTime via getObject/setObject, auto-converts to LocalTime, missing date is filled with 0000-01-01
LocalDateTimeAsLocalDateTypeHandlerjava.time.LocalDateReads/writes LocalDateTime via getObject/setObject, auto-converts to LocalDate, missing time is filled with 00:00
JapaneseDateAsSqlDateTypeHandlerjava.time.chrono.JapaneseDateReads/writes JapaneseDate data via getDate/setDate
OffsetDateTimeAsZonedDateTimeTypeHandlerjava.time.ZonedDateTimeReads/writes OffsetDateTime via getObject/setObject, auto-converts to ZonedDateTime
SqlTimestampAsInstantTypeHandlerjava.time.InstantReads/writes Instant data via getTimestamp/setTimestamp

Automatic Timezone Conversion​

Automatic timezone conversion — timezone reads and writes are converted to UTC.

HandlerJava TypePurpose
SqlTimestampAsUTCOffsetDateTimeTypeHandlerjava.time.OffsetDateTimeAutomatic timezone conversion, reads/writes Timestamp data using OffsetDateTime
SqlTimestampAsUTCOffsetTimeTypeHandlerjava.time.OffsetTimeAutomatic timezone conversion, reads/writes Timestamp data using OffsetTime

Special Support​

HandlerJava TypePurpose
JulianDayTypeHandlerjava.time.LocalDateStores dates using Julian Day Number, supports BCE dates. Stored as BIGINT in the database
PgDateTypeHandlerjava.time.LocalDatePostgreSQL 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 YearMeaning
Year 11 CE (1 AD)
Year 01 BCE (1 BC)
Year -12 BCE (2 BC)
Year -99100 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.