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级