2013-12-23 3 views
3

데이터베이스에서 java.sql.Timestamp 객체로 타임 스탬프 열을 읽는 중입니다. 그런 다음 timestamp의 값을 String 객체로 변환하려고하지만 마이크로 초 정밀도를 유지하려고합니다. toString() 메서드를 호출하면 나에게 가까워 지지만 마이크로 초 안에 후미 0이 없어 보인다. 타임 스탬프가 0이 아닌 숫자로 끝나면 모든 것이 정상입니다.마이크로 초 정밀도를 가진 java.sql.Timestamp 문자열

샘플 : 50 : 11.579410

SimpleDateFormat outDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS"); 
String s = "2005-02-25 11:50:11.579410"; 
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(s); 
String out = ts.toString(); // This returns 2005-02-25 11:50:11.57941 
out = outDateFormat.format(ts); // This returns 2005-02-25 11:50:11.000579 

은 정말 2005년 2월 25일 (11)를 인쇄 할 찾고 있어요.

+0

'S'는 밀리 초이고 마이크로 초는 아닙니다 ... –

+0

동의합니다. 나는 그것이 어떻게 행동하는지 보여주기 위해 표본을 넣었다. – Mensur

+0

왜 마이크로 초 정밀도가 필요합니까? – ashes999

답변

4

Timestamp의 getNanos() - methode를 사용할 수 있습니다.

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss."); 
String s = "2005-02-25 11:50:11.579410"; 
java.sql.Timestamp ts = java.sql.Timestamp.valueOf(s); 
int microFraction = ts.getNanos()/1000; 

StringBuilder sb = new StringBuilder(fmt.format(ts)); 
String tail = String.valueOf(microFraction); 
for (int i = 0; i < 6 - tail.length(); i++) { 
    sb.append('0'); 
} 
sb.append(tail); 
System.out.println(sb.toString()); 
+0

내 필요에 따라 작동합니다. 감사! – Mensur

+1

아마도'String.format'을 사용하는 것이 좋을 것입니다. 아니면 사용자 정의 추가 코드가 아닌'MessageFormat'을 사용하는 것이 더 나을 것입니다. –

관련 문제