Class DateTime

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

public class DateTime extends 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
    Description
    private int
    The date component of the server datetime value.
    (package private) static final int
    Indicates date value not used.
    private Date
    Cached value of the datetime as a java.sql.Date.
    private short
    Unpacked day value.
    private short
    Unpacked hour value.
    private short
    Unpacked millisecond value.
    private short
    Unpacked minute value.
    private short
    Unpacked month value.
    private short
    Unpacked second value.
    private String
    Cached value of the datetime as a String.
    private int
    The time component of the server datetime value.
    (package private) static final int
    Indicates time value not used.
    private Time
    Cached value of the datetime as a java.sql.Time.
    private Timestamp
    Cached value of the datetime as a java.sql.Timestamp.
    private boolean
    Indicates server datetime values have been unpacked.
    private short
    Unpacked year value.
  • Constructor Summary

    Constructors
    Constructor
    Description
    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.
    Constructs a DateTime object from a java.sql.Date.
    Constructs a DateTime object from a java.sql.Time.
    Constructs a DateTime object from a java.sql.Timestamp.
  • Method Summary

    Modifier and Type
    Method
    Description
    (package private) int
    Retrieves the date component of a datetime value.
    (package private) int
    Retrieves the time component of a datetime value.
    void
    Converts a calendar date into days since 1900 (Sybase epoch).
    void
    Converts separate time components into a datetime time value.
    Retrieves the current datetime value as a Date.
    Retrieves the current datetime value as a Time, Date or Timestamp.
    Retrieves the current datetime value as a String.
    Retrieves the current datetime value as a Time.
    Retrieves the current datetime value as a Timestamp.
    private void
    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 Details

    • DATE_NOT_USED

      static final int DATE_NOT_USED
      Indicates date value not used.
      See Also:
    • TIME_NOT_USED

      static final int TIME_NOT_USED
      Indicates time value not used.
      See Also:
    • 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 String stringValue
      Cached value of the datetime as a String.
    • tsValue

      private Timestamp tsValue
      Cached value of the datetime as a java.sql.Timestamp.
    • dateValue

      private Date dateValue
      Cached value of the datetime as a java.sql.Date.
    • timeValue

      private Time timeValue
      Cached value of the datetime as a java.sql.Time.
  • Constructor Details

    • 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(Timestamp ts) throws SQLException
      Constructs a DateTime object from a java.sql.Timestamp.
      Parameters:
      ts - Timestamp object representing the datetime
      Throws:
      SQLException - if the date is out of range
    • DateTime

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

      DateTime(Date d) throws SQLException
      Constructs a DateTime object from a java.sql.Date.
      Parameters:
      d - Date object representing the datetime
      Throws:
      SQLException - if the Date is out of range
  • Method Details

    • 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 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:
      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 Timestamp toTimestamp()
      Retrieves the current datetime value as a Timestamp.
      Returns:
      the current datetime value as a java.sql.Timestamp
    • toDate

      public Date toDate()
      Retrieves the current datetime value as a Date.
      Returns:
      the current datetime value as a java.sql.Date
    • toTime

      public Time toTime()
      Retrieves the current datetime value as a Time.
      Returns:
      the current datetime value as a java.sql.Time
    • toObject

      public 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 String toString()
      Retrieves the current datetime value as a String.
      Overrides:
      toString in class Object
      Returns:
      the current datetime value as a String