Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

String -> java.util.Date -> java.sql.Date (with time stamp)

Here is my problem: I have a user input a date like: 2012-12-24 (string) I concatenate a time to that string, and convert to java.util.Date My code looks like:

String tempstartdate = startdte;  //startdte is the string value from a txtfield
       tempstartdate += " 00:01:00";
       String tempenddate = startdte;
       tempenddate += " 23:59:59";

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");               
       java.util.Date validstartdte = null;
        java.util.Date validenddte = null;

validstartdte = df.parse(tempstartdate);  //validstartdte is a util.Date (and works)
validenddte = df.parse(tempenddate);

My problem is, when I take that util.Date and want to make it an sql.Date:

java.sql.Date sqlstartDate = new java.sql.Date(validstartdte.getTime());
java.sql.Date sqlendDate = new java.sql.Date(validenddte.getTime());

It will not give me the timestamp I assigned, it will only return the date in the form yyyy-MM-dd (such as 2012-12-23).

WHY!? I'm so frustrated.
Note: I noticed that when I used breakpoints, I was able to expand sqlendDate and see there is a value in there called cdate that returns: 2012-12-12T23:59:59.000-0500 The database I'm using is PostgreSQL.

Please help! Much appreciated.

like image 506
akwarywo Avatar asked Dec 21 '12 00:12

akwarywo


People also ask

Does java sql date include time?

java. sql. Date represents a date, not a date and time.

How is date stored in database * java sql date java Util date java sql datetime java Util datetime?

Its main purpose is to represent SQL DATE, which keeps years, months and days. No time data is kept. In fact, the date is stored as milliseconds since the 1st of January 1970 00:00:00 GMT and the time part is normalized, i.e. set to zero. Basically, it's a wrapper around java.

What is the difference between java sql time and java sql timestamp in java?

Time represents SQL TIME and only contains information about hour, minutes, seconds and milliseconds without date component. java. sql. Timestamp represents SQL TIMESTAMP which contains both Date and Time information to the nanoseconds precision.

Can we convert date to timestamp in java?

We can convert date to timestamp using the Timestamp class which is present in the SQL package. The constructor of the time-stamp class requires a long value. So data needs to be converted into a long value by using the getTime() method of the date class(which is present in the util package).


1 Answers

I might be very late to answer this question but I think it might be helpful.

As stated by 'Felipe Fonseca', I converted the util date to sql date as follows:

public static java.sql.Timestamp convertToSqlDateTime(Date utilDate){
    return new java.sql.Timestamp(utilDate.getTime());
}

Normally, java.sql.Date only returns Date value and time will be discarded. So, in order to get time also, java.sql.TimeStamp must be used.

TimeStamp Constructs a Timestamp object using a milliseconds time value. The integral seconds are stored in the underlying date value; the fractional seconds are stored in the nanos field of the Timestamp object.

For this purpose, utilDate.getTime() is used to return the number of milliseconds since January 1, 1970, 00:00:00 GMT represented by this Date Object.

If we want only java.sql.Date, we can do:

public static java.sql.Date convertToSqlDate(Date utilDate){
    return new java.sql.Date(utilDate.getTime());
}
like image 55
Chandra Prakash Avatar answered Sep 24 '22 05:09

Chandra Prakash