Solved

Getting Microseconds from Date

Posted on 2006-06-14
16
757 Views
Last Modified: 2008-01-09
Hi, we hold timestamps in our datavase in the following format: 2004-02-13:10:28:45.530374, trouble is that when we try to use  simpleDateFormat with the format yyyy-MM-dd hh:mm:ss.SSSSSS it doesnt work since it only goes upto milliseconds not microseconds.

Is there a way I can get the microseconds?
0
Comment
Question by:Chriseybaby
  • 4
  • 3
  • 2
  • +3
16 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 16901116
Microseconds are not supported in Java dates
0
 
LVL 14

Expert Comment

by:StillUnAware
ID: 16901120
That's a good one, 0 minutes in answering a question :)
0
 
LVL 30

Expert Comment

by:Mayank S
ID: 16901200
The best I know is System.nanoTime () ; but that's nanoseconds.... the Date class does not support micro-seconds.
0
Comprehensive Backup Solutions for Microsoft

Acronis protects the complete Microsoft technology stack: Windows Server, Windows PC, laptop and Surface data; Microsoft business applications; Microsoft Hyper-V; Azure VMs; Microsoft Windows Server 2016; Microsoft Exchange 2016 and SQL Server 2016.

 
LVL 92

Expert Comment

by:objects
ID: 16901223
0
 
LVL 4

Accepted Solution

by:
Yagantappa earned 250 total points
ID: 16901227
You can make use of java.sql.Timestamp.
0
 

Author Comment

by:Chriseybaby
ID: 16903319
Thanks for your help, looks like its going to have to be the timestamp, very annoying tho...
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 16903537
>>looks like its going to have to be the timestamp

That won't work either. Timestamp only supports milliseconds
0
 
LVL 30

Expert Comment

by:Mayank S
ID: 16910404
TimeStamp has a method called getNanos () but that wouldn't get the microsecond component.
0
 
LVL 14

Expert Comment

by:StillUnAware
ID: 16911057
What are You talking about, not a single OS internally can count the time so exactly, I guess the shortest period of time which can be accessed is milisecond.
0
 
LVL 30

Expert Comment

by:Mayank S
ID: 16911135
Well I haven't used the getNanos () method of TimeStamp but probably that is what Yagantappa meant. In any case, like I said - it will not solve the problem because whether it gets the nanoseconds or not, it cannot get the microseconds. System.nanoTime () says "Returns the current value of the most precise available system timer, in nanoseconds".
0
 
LVL 4

Expert Comment

by:Yagantappa
ID: 16912338
Not all databases support micro seconds. Oracle 10g support micro seconds. I tried the following program and it worked fine

Table in Oracle database
CREATE TABLE TEST_TIMESTAMP (
    T1      TIMESTAMP(6) NULL
    )
GO

Here is the test java code and its output

        Timestamp ts = new Timestamp(106, 06, 10, 10, 10, 10, 213286789);
        System.out.println("ts = " + ts);
        Class.forName ("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@xxx.xxx.xxx.xxx:xxxx:xxxX", "xxxxxx", "xxxxxx");
        Statement stmt = conn.createStatement();
        PreparedStatement p = conn.prepareStatement("update test_timestamp set t1 = ?");
        p.setTimestamp(1, ts);
        p.execute();
        ResultSet rs = stmt.executeQuery("select * from test_timestamp");
        while (rs.next())
        {
            System.out.println("column 1 = " + rs.getTimestamp(1));
        }

Output
--------
ts = 2006-07-10 10:10:10.213286789
column 1 = 2006-07-10 10:10:10.213287
column 1 = 2006-07-10 10:10:10.213287
column 1 = 2006-07-10 10:10:10.213287
column 1 = 2006-07-10 10:10:10.213287
column 1 = 2006-07-10 10:10:10.213287
0
 

Author Comment

by:Chriseybaby
ID: 16912368
I havent tried using it yet, just hoped it would work.

The problem is, after I get the data from the data base I lose the last little bit of the timestamp. Therefore when I try to compare the 2 they are different. I could use a like query but would prefer to find a solution.

Maybe if I save it as a string I might be able to get around it...
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 16912402
>>I tried the following program and it worked fine

That's all OK but Chriseybaby's question specifies that s/he is using it in conjunction with Date. That's not possible, as Date only supports ms
0
 
LVL 30

Expert Comment

by:Mayank S
ID: 16912408
>> I havent tried using it yet, just hoped it would work.

You shouldn't close the question until you've confirmed that the answer is correct :) many people will have many suggestions and you can't say which one is going to work until you try them. Anyway, if this one does, its great :)
0
 
LVL 92

Expert Comment

by:objects
ID: 16916529
Timestamp should work fine.
If the column in the database is a timestamp that supports the accuracy you need, then use getTimestamp() to retrieve it.
If its stored as a string then split the string (d.split("\\.")) when you extract it and parse the regular date/time (2004-02-13:10:28:45) with SDF and store it in a Timestamp, and parse the rest (530374) as an int and set the nanoseconds on your parsed Timestamp using setNanos() method.
0

Featured Post

Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For customizing the look of your lightweight component and making it look lucid like it was made of glass. Or: how to make your component more Apple-ish ;) This tip assumes your component to be of rectangular shape and completely opaque. (COD…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers learn about the third conditional statement “else if” and use it in an example program. Then additional information about conditional statements is provided, covering the topic thoroughly. Viewers learn about the third conditional statement …
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question