DateTime (jTDS API)
Date: 2013-06-08

net.sourceforge.jtds.jdbc

## Class DateTime

- java.lang.Object
- - net.sourceforge.jtds.jdbc.DateTime

-     public class DateTime
      extends java.lang.Object

  Encapsulates Sybase date/time values and provides conversions to and from Java classes.
  Version:
    $Id: DateTime.java,v 1.4.2.2 2009-08-20 19:44:04 ickzon Exp $
  Author:
    Mike Hutchinson

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private int` | `date` The date component of the server datetime value.
    `(package private) static int` | `DATE_NOT_USED` Indicates date value not used.
    `private java.sql.Date` | `dateValue` Cached value of the datetime as a `java.sql.Date`.
    `private short` | `day` Unpacked day value.
    `private short` | `hour` Unpacked hour value.
    `private short` | `millis` Unpacked millisecond value.
    `private short` | `minute` Unpacked minute value.
    `private short` | `month` Unpacked month value.
    `private short` | `second` Unpacked second value.
    `private java.lang.String` | `stringValue` Cached value of the datetime as a `String`.
    `private int` | `time` The time component of the server datetime value.
    `(package private) static int` | `TIME_NOT_USED` Indicates time value not used.
    `private java.sql.Time` | `timeValue` Cached value of the datetime as a `java.sql.Time`.
    `private java.sql.Timestamp` | `tsValue` Cached value of the datetime as a `java.sql.Timestamp`.
    `private boolean` | `unpacked` Indicates server datetime values have been unpacked.
    `private short` | `year` Unpacked year value.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DateTime(java.sql.Date d)` Constructs a DateTime object from a `java.sql.Date`.
    `DateTime(int date, int time)` Constructs a DateTime object from the two integer components of a datetime.
    `DateTime(short date, short time)` Constructs a DateTime object from the two short components of a smalldatetime.
    `DateTime(java.sql.Time t)` Constructs a DateTime object from a `java.sql.Time`.
    `DateTime(java.sql.Timestamp ts)` Constructs a DateTime object from a `java.sql.Timestamp`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `(package private) int` | `getDate()` Retrieves the date component of a datetime value.
    `(package private) int` | `getTime()` Retrieves the time component of a datetime value.
    `void` | `packDate()` Converts a calendar date into days since 1900 (Sybase epoch).
    `void` | `packTime()` Converts separate time components into a datetime time value.
    `java.sql.Date` | `toDate()` Retrieves the current datetime value as a Date.
    `java.lang.Object` | `toObject()` Retrieves the current datetime value as a Time, Date or Timestamp.
    `java.lang.String` | `toString()` Retrieves the current datetime value as a String.
    `java.sql.Time` | `toTime()` Retrieves the current datetime value as a Time.
    `java.sql.Timestamp` | `toTimestamp()` Retrieves the current datetime value as a Timestamp.
    `private void` | `unpackDateTime()` Converts a Julian datetime from the Sybase epoch of 1900-01-01 to the equivalent unpacked year/month/day etc.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### DATE_NOT_USED

          static final int DATE_NOT_USED

      Indicates date value not used.
      See Also:
        Constant Field Values

    - #### TIME_NOT_USED

          static final int TIME_NOT_USED

      Indicates time value not used.
      See Also:
        Constant Field Values

    - #### date

          private int date

      The date component of the server datetime value.

    - #### time

          private int time

      The time component of the server datetime value.

    - #### year

          private short year

      Unpacked year value.

    - #### month

          private short month

      Unpacked month value.

    - #### day

          private short day

      Unpacked day value.

    - #### hour

          private short hour

      Unpacked hour value.

    - #### minute

          private short minute

      Unpacked minute value.

    - #### second

          private short second

      Unpacked second value.

    - #### millis

          private short millis

      Unpacked millisecond value.

    - #### unpacked

          private boolean unpacked

      Indicates server datetime values have been unpacked.

    - #### stringValue

          private java.lang.String stringValue

      Cached value of the datetime as a `String`.

    - #### tsValue

          private java.sql.Timestamp tsValue

      Cached value of the datetime as a `java.sql.Timestamp`.

    - #### dateValue

          private java.sql.Date dateValue

      Cached value of the datetime as a `java.sql.Date`.

    - #### timeValue

          private java.sql.Time timeValue

      Cached value of the datetime as a `java.sql.Time`.

  - ### Constructor Detail

    - #### DateTime

          DateTime(int date,
                  int time)

      Constructs a DateTime object from the two integer components of a datetime.
      Parameters:
        `date` - server date field
        `time` - server time field

    - #### DateTime

          DateTime(short date,
                  short time)

      Constructs a DateTime object from the two short components of a smalldatetime.
      Parameters:
        `date` - server date field
        `time` - server time field

    - #### DateTime

          DateTime(java.sql.Timestamp ts)
             throws java.sql.SQLException

      Constructs a DateTime object from a `java.sql.Timestamp`.
      Parameters:
        `ts` - `Timestamp` object representing the datetime
      Throws:
        `java.sql.SQLException` - if the date is out of range

    - #### DateTime

          DateTime(java.sql.Time t)
             throws java.sql.SQLException

      Constructs a DateTime object from a `java.sql.Time`.
      Parameters:
        `t` - `Time` object representing the datetime
      Throws:
        `java.sql.SQLException` - if the time (date) is out of range

    - #### DateTime

          DateTime(java.sql.Date d)
             throws java.sql.SQLException

      Constructs a DateTime object from a `java.sql.Date`.
      Parameters:
        `d` - `Date` object representing the datetime
      Throws:
        `java.sql.SQLException` - if the Date is out of range

  - ### Method Detail

    - #### getDate

          int getDate()

      Retrieves the date component of a datetime value.
      Returns:
        the datetime date component as an `int`

    - #### getTime

          int getTime()

      Retrieves the time component of a datetime value.
      Returns:
        the datetime time component as an `int`

    - #### unpackDateTime

          private void unpackDateTime()

      Converts a Julian datetime from the Sybase epoch of 1900-01-01 to the equivalent unpacked year/month/day etc. Algorithm from Fliegel, H F and van Flandern, T C (1968). Communications of the ACM, Vol 11, No 10 (October, 1968).

                     SUBROUTINE GDATE (JD, YEAR,MONTH,DAY)
               C
               C---COMPUTES THE GREGORIAN CALENDAR DATE (YEAR,MONTH,DAY)
               C   GIVEN THE JULIAN DATE (JD).
               C
                     INTEGER JD,YEAR,MONTH,DAY,I,J,K
               C
                     L= JD+68569
                     N= 4*L/146097
                     L= L-(146097*N+3)/4
                     I= 4000*(L+1)/1461001
                     L= L-1461*I/4+31
                     J= 80*L/2447
                     K= L-2447*J/80
                     L= J/11
                     J= J+2-12*L
                     I= 100*(N-49)+I+L
               C
                     YEAR= I
                     MONTH= J
                     DAY= K
               C
                     RETURN
                     END

    - #### packDate

          public void packDate()
                        throws java.sql.SQLException

      Converts a calendar date into days since 1900 (Sybase epoch).

      Algorithm from Fliegel, H F and van Flandern, T C (1968). Communications of the ACM, Vol 11, No 10 (October, 1968).

                     INTEGER FUNCTION JD (YEAR,MONTH,DAY)
               C
               C---COMPUTES THE JULIAN DATE (JD) GIVEN A GREGORIAN CALENDAR
               C   DATE (YEAR,MONTH,DAY).
               C
                     INTEGER YEAR,MONTH,DAY,I,J,K
               C
                     I= YEAR
                     J= MONTH
                     K= DAY
               C
                     JD= K-32075+1461*(I+4800+(J-14)/12)/4+367*(J-2-(J-14)/12*12)
                    2    /12-3*((I+4900+(J-14)/12)/100)/4
               C
                     RETURN
                     END

      Throws:
        `java.sql.SQLException` - if the date is outside the accepted range, 1753-9999

    - #### packTime

          public void packTime()

      Converts separate time components into a datetime time value.

    - #### toTimestamp

          public java.sql.Timestamp toTimestamp()

      Retrieves the current datetime value as a Timestamp.
      Returns:
        the current datetime value as a `java.sql.Timestamp`

    - #### toDate

          public java.sql.Date toDate()

      Retrieves the current datetime value as a Date.
      Returns:
        the current datetime value as a `java.sql.Date`

    - #### toTime

          public java.sql.Time toTime()

      Retrieves the current datetime value as a Time.
      Returns:
        the current datetime value as a `java.sql.Time`

    - #### toObject

          public java.lang.Object toObject()

      Retrieves the current datetime value as a Time, Date or Timestamp.
      Returns:
        the current datetime value as an `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Retrieves the current datetime value as a String.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        the current datetime value as a `String`

Generated on June 8 2013