2015-04-01 8 views
9

Я хочу преобразовать java.util.Date в java.sql.Date, но мне нужны часы, минуты и секунды, но java.sql.Date можно использовать только для хранения даты (нет времени) . Я попробовал приведенный ниже код, но он дает только год, месяц и день для объекта java.sql.Date.Как сохранить время из java.util.Date в java.sql.Date

SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); 
Date parsed = format.parse("20110210120534"); 
System.out.println(format.parse("20110210120534")); 
java.sql.Date sql = new java.sql.Date(parsed.getTime()); 
System.out.println("SQL date is= "+sql); 

Токовый выход:

2011-02-10 

Желаемый результат:

2011-02-10 12:05:34 
+0

Цель 'java.sql.Date' точно хранить только информацию о дате, а не о времени (мы имеем' java.sql.Time' для этого). Чего вы действительно пытаетесь достичь? Почему вы хотите использовать 'java.sql.Date' вместо' java.util.Date'? – Pshemo

+3

Используйте 'java.sql.Timestamp' вместо' java.sql.Date', если вам нужна более высокая точность. – user432

+0

Спасибо, я использовал Timestamp для решения этой проблемы. –

ответ

10

Тип java.sql.Date используется для хранения только дату (без времени) информации, так как она сопоставляется с типом SQL DATE , который не сохраняет время. Каков его метод toString():

Форматирует дату в формате escape-формата yyyy-mm-dd.

Для достижения желаемых результатов можно использовать java.sql.Timestamp, который хранит даты и информацию о времени, отображение на тип SQL TIMESTAMP. Его toString() метод выводит то, что вам нужно:

Фоматирует метку времени в формате JDBC метка времени побега: гггг-мм-дд чч: мм: ss.fffffffff, где FFFFFFFFFF указывает наносекунд.

Пример:

java.text.DateFormat format = new java.text.SimpleDateFormat("yyyyMMddHHmmss"); 
java.util.Date date = format.parse("20110210120534"); 
java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime()); 
System.out.println(timestamp); // prints "2011-02-10 12:05:34.0" 
3

Как сказал другие люди, вам нужно использовать java.sql.Timestamp.

public class Test { 
     public static void main(String[] args) { 
      java.util.Date date = new java.util.Date(); 
      java.sql.Timestamp sqlTimeStamp = new java.sql.Timestamp(date.getTime()); 
      System.out.println("util-date:" + date); 
      System.out.println("sql-timestamp:" + sqlTimeStamp); 

     } 

} 

http://tutorials.jenkov.com/java-date-time/java-sql-date.html

Смежные вопросы