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

日常学习 专栏收录该内容
46 篇文章 1 订阅

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类型

DateFormat format = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");    // 这里填写的是想要进行转换的时间格式
String str = "2016-12-11 17:17:10";         // 时间字符串

java.utils.Date date = null;
try{
date = format.parse(str);
}catch(Exception e){
e.printStackTrace();
}

Date类型转化为字符串

DateFormat format = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");    // 这里填写的是想要进行转换的时间格式
Date date = new java.utils.Date();      // 获取当前时间
String str = format.format(date);
// str = "2016-12-11 17:17:10"

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级

  • 7
    点赞
  • 6
    评论
  • 28
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 6 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

姜茶

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值