java Date 和 数据库Date,DateTimed

Java 向数据库中输入datetime类型数据

Java 可以使用jdbc访问数据库,我们通常使用的时间是java.utils.Date。后来尝试使用java.sql.Date朝数据库中写入时间,发现了一个问题,这些写入的时间,无一例外的没有后面的小时等信息,只有年-月-日

java.sql.Date只表示数据库中日期的部分如果想向数据库中写入完整的时间,如2016-12-11 17:10:25.000 则需要使用java.sql.Timestamp这个类。

下面,我给大家介绍下两种东西的使用方法

字符串和java.utils.Date相互转换

我们使用DateFormat 类来进行String和Date的转换,而java.utils.Date是我们在java编程中经常使用的。

字符串转化为Date类型

public void getDateTime() throws ParseException{
        String str = "2016-12-11 17:17:10"; //字符串格式的时间
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//要转换的时间格式
        java.util.Date date = dateFormat.parse(str);  //str 转 Date
        System.out.println("Time of Date type:"+date);
    }

 

Date类型转化为字符串

        //Date类型转字符串
    public void getCurrentStrTime(){
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");   // 这里填写的是想要进行转换的时间格式
        java.util.Date date = new java.util.Date();      // 获取当前时间
        String str = dateFormat.format(date);  //Date 转换为 str
        System.out.println("Time of String type: "+str);
    }        

 

 

Java.sql.Date向数据库写入日期(年-月-日)

这里就需要java.sql.Date和java.utils.Date进行相互转换了,这个转换一般比较容易,利用构造方法和.getTime() 方法进行转化。

java.utils.Date date = new java.utils.Date();   // 获取当前时间
java.sql.Date sql_date = new java.sql.Date(date.getTime()); //转换成java.sql.Date
接着使用PreparedStatement 向数据库中写入时间,即可。

ps.setDate(1, new java.sql.Date(date.getTime()));   // 设置项

Java.sql.Timestamp向数据库中写入时间(年-月-日  时:分:秒)

需要注意的是,上边一种方法只能将日期写入到数据库中,为了能够将时间精确到s甚至是ms。我们需要使用java.sql.Timestamp 类型。 
java.sql.Timestamp 类型的构造函数也可以使用Long进行初始化

Date date = new Date();  
Timestamp timeStamp = new Timestamp(date.getTime());  
 

故在生成java.utils.Date时,将时间精确到s,然后使用预编译语句执行SQL语句

Date date = new Date();  
Timestamp timeStamp = new Timestamp(date.getTime()); 
 sql= "insert into flowmeter2(total,std_flow,temp,press,time) values(?,?,?,?,?)";   
        try {  
            PreparedStatement ps = connection.prepareStatement(sql);  
            ps.setString(1, total);  
            ps.setString(2, std_flow);  
            ps.setString(3, temp);  
            ps.setString(4, press);  
            ps.setTimestamp(5, timeStamp);  
            ps.executeUpdate();  
            System.out.println("添加成功!");  
            connection.close();  
便可以将时间精确到ms级

 

posted @ 2018-09-29 23:55  魏大大  阅读(395)  评论(0编辑  收藏  举报