Module org.jooq

Interface Interval

  • All Superinterfaces:
    All Known Implementing Classes:
    DayToSecond, YearToMonth, YearToSecond

    public interface Interval
    extends Serializable
    A substitute for JDBC's missing java.sql.Interval data type.

    JDBC lacks an important data type that is present in most SQL databases: INTERVAL. The SQL:2008 standard states that there are two types of intervals:

    4.6.3 Intervals

    There are two classes of intervals. One class, called year-month intervals, has an express or implied datetime precision that includes no fields other than YEAR and MONTH, though not both are required. The other class, called day-time intervals, has an express or implied interval precision that can include any fields other than YEAR or MONTH.

    INTERVAL can be combined with date time data types according to the following operation table:

    Operand 1 Operator Operand 2 Result Type
    Datetime Datetime Interval
    Datetime + or – Interval Datetime
    Interval + Datetime Datetime
    Interval + or – Interval Interval
    Interval * or / Numeric Interval
    Numeric * Interval Interval

    Interval implementations can be expected to also also extend Number.

    Note: only a few databases actually support this data type on its own. You can still use it for date time arithmetic in other databases, though, through Field.add(Field) and Field.sub(Field) Databases that have been observed to natively support INTERVAL data types are:

    These dialects have been observed to partially support INTERVAL data types in date time arithmetic functions, such as TIMESTAMPADD, and TIMESTAMPDIFF:

    Lukas Eder
    • Method Detail

      • neg

        Interval neg()
        Negate the interval (change its sign)
      • abs

        Interval abs()
        Get the absolute value of the interval (set its sign to positive)
      • getSign

        int getSign()
        The sign of the interval
        1 for positive or zero, -1 for negative
      • toDuration

        Duration toDuration()
        Get a duration representation of this interval.

        There is an obvious Duration representation for DayToSecond intervals. If the interval contains YearMonth information, then the corresponding duration will use:

        • 1 year = 365.25 days
        • 1 month = 30 days

        This corresponds to PostgreSQL's EXTRACT(EPOCH FROM my_interval) behaviour.