0

Ich verwende Apache Meta-model, um die Werte aus MS SQL SERVER 2008 R2 Datenbank zu extrahieren. Es gibt ein Feld in der MS SQL SERVER 2008 R2 Datenbank des Typs TIME(7), deren Java-Äquivalenttyp java.sql.Time ist, aber java.sql.Time zeigt NICHT die Millisekunden. z.B.Wie extrahiert man den Wert von TIME (7) Feld von MS SQL SERVER 2008 R2 in Java?

Actual `TIME(7)` value in database: `12:28:16.9475678` 
whereas I getting: `12:28:16` 

Wie erhalten Sie die Zeit in Millisekunden?

Aktualisiert:

Als ich versuchte Millisekunden erhalten mit org.joda.time.LocalTime wie Sie unten sehen können:

LocalTime localTime = new LocalTime(((Time)row.getValues()[pos]).getTime()); 
    localTime.toString(); 

Ausgang: 12:28:16.947 (es den runden Wert von 9475678 zeigt)

Nach dem Konvertieren zu String, bekomme ich den runden Wert von Millisekunden 12:28:16.947. Die Millisekundengenauigkeit ist verloren. Bitte schlagen Sie vor, wie Sie den genauen Wert in Millisekunden ohne Rundungswert erhalten?

Aktualisiert:

ich mit getNanos versucht(), wie vorgeschlagen, aber ich bin immer null Millisekunden außer meinem genauen Wert in Millisekunden wie:

Istwert: 12: 28: 16,9475678 und ich bin immer 12: 28: 16,9470000

Code: -

long timestamp =new Timestamp(((Time)row.getValues()[pos]).getTime()).getNanos(); 

Antwort

2

java.sql.Time enthält keine Millisekunden. Verwenden Sie stattdessen java.sql.Timestamp, da dies die Sekundenbruchteile enthält.

+0

Ich versuchte es mit 'org.joda.time.LocalTime' und es automatisch Runden der Millisekunden Wert. – shree

+0

@Shree mit 'LocalTime' wird Ihnen nicht helfen, weil Sie immer noch zuerst die' java.sql.Time' bekommen. Holen Sie es als Timestamp (Sie müssen möglicherweise konvertieren/in Zeitform in Ihre Abfrage zuerst (!)), Und auch auf ['Timestamp.getNanos()'] (http://docs.oracle.com/javase/) /docs/api/java/sql/Timestamp.html#getNanos--), die die Sekundenbruchteile in Nanosekunden enthält. –

+0

@MarkRotteveel. Ich werde es versuchen und Sie wissen lassen. –