如何将时间从java.util.Date存储到java.sql.Date中

时间:2015-04-01 13:57:50

标签: java date

我想将java.util.Date转换为java.sql.Date,但我也想要小时,分钟和秒,但java.sql.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

2 个答案:

答案 0 :(得分:11)

java.sql.Date类型用于仅存储日期(无时间)信息,因为它映射到SQL DATE类型,而不会存储时间。它的toString()方法的作用是:

  

以日期转义格式yyyy-mm-dd格式化日期。

要获得所需的输出,您可以使用java.sql.Timestamp,它存储日期时间信息,映射到SQL TIMESTAMP类型。它的toString()方法输出你需要的东西:

  

以JDBC时间戳转义格式格式化时间戳:yyyy-mm-dd hh:mm: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"

答案 1 :(得分: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