如何在Java中对mysql数据库插入datetime类型数据

本文详细介绍了如何使用DateFormat和SimpleDateFormat类将日期/时间格式化为特定格式,以及Timestamp类在数据库中的应用,对比了两者之间的主要区别。

Date date=new Date();     //先获取一个Date对象

 

  • DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   //创建一个格式化日期对象

 String punchTime = simpleDateFormat.format(date);//格式化后的时间

或者:

 

  • Timestamp timeStamp = new Timestamp(date.getTime()); // 让日期时间转换为数据库中的timestamp类型

 

区别:

 

  • DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。 日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

 

 

  • Timestamp 允许 JDBC API 将该类标识为 SQL TIMESTAMP 值。它通过允许小数秒到纳秒级精度的规范来添加保存 SQLTIMESTAMP 小数秒值的能力。Timestamp 也提供支持时间戳值的 JDBC 转义语法的格式化和解析操作的能力。 

 

简言之,DateFormat+SimpleDateFormat可以将日期/时间格式化成自己想要的格式

如new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"),则simpleDateFormat.format(date)的结果为2018-01-25 15:35:57 

若new SimpleDateFormat("yyyy年MM月dd 日HH时mm分ss秒") 则simpleDateFormat.format(date)的结果为2018年01月25日 15时35分57秒 

而Timestamp 类,new Timestamp(date.getTime()) 只能得2018-01-25 15:35:57 这种格式

Java 代码中向 MySQL 数据库的 `datetime(6)` 数据类型字段传值,可借助 JDBC 实现。`datetime(6)` 能存储包含毫秒的日期和时间信息,精确到微秒。以下为详细的实现步骤及示例代码: #### 1. 加载 JDBC 驱动 要先加载 MySQL 的 JDBC 驱动,示例代码如下: ```java Class.forName("com.mysql.cj.jdbc.Driver"); ``` #### 2. 建立数据库连接 使用数据库的 URL、用户名和密码建立连接: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; String url = "jdbc:mysql://localhost:3306/your_database"; String username = "your_username"; String password = "your_password"; Connection connection = DriverManager.getConnection(url, username, password); ``` #### 3. 准备 SQL 语句 使用 `PreparedStatement` 准备 SQL 语句,示例如下: ```java import java.sql.PreparedStatement; import java.sql.SQLException; String sql = "INSERT INTO your_table (your_datetime_column) VALUES (?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); ``` #### 4. 设置参数 使用 `java.sql.Timestamp` 类型的对象来设置 `datetime(6)` 字段的值,示例如下: ```java import java.sql.Timestamp; import java.time.LocalDateTime; LocalDateTime localDateTime = LocalDateTime.now(); Timestamp timestamp = Timestamp.valueOf(localDateTime); preparedStatement.setTimestamp(1, timestamp); ``` #### 5. 执行 SQL 语句 执行插入操作: ```java preparedStatement.executeUpdate(); ``` #### 6. 关闭资源 操作完成后,关闭 `PreparedStatement` 和 `Connection`: ```java preparedStatement.close(); connection.close(); ``` ### 完整示例代码 ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; import java.time.LocalDateTime; public class InsertDateTime6 { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/your_database"; String username = "your_username"; String password = "your_password"; try { // 加载 JDBC 驱动 Class.forName("com.mysql.cj.jdbc.Driver"); // 建立数据库连接 Connection connection = DriverManager.getConnection(url, username, password); // 准备 SQL 语句 String sql = "INSERT INTO your_table (your_datetime_column) VALUES (?)"; PreparedStatement preparedStatement = connection.prepareStatement(sql); // 设置参数 LocalDateTime localDateTime = LocalDateTime.now(); Timestamp timestamp = Timestamp.valueOf(localDateTime); preparedStatement.setTimestamp(1, timestamp); // 执行 SQL 语句 preparedStatement.executeUpdate(); // 关闭资源 preparedStatement.close(); connection.close(); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } } ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值