如何数据库设置时区为北京时间?怎么将java.util.Date的Date参数转换成sql中Date的时间格式?
数据库设置时区为北京时间
首先,引进在java代码中连接数据库的基本方法:
1. 引入jar文件.
2. 加载数据库驱动 (JavaSE项目中可以省略 , JavaWeb项目必须编写此步骤)
Class.forName("com.mysql.jdbc.Driver");
3. 通过驱动管理器, 获取JDBC连接对象.
Connection conn = DriverManager.getConnection("数据库连接地址URL","帐号","密码");
// 数据库连接地址格式: 主协议:子协议://ip地址:端口号/数据库名称
// mysql的连接地址: jdbc:mysql://localhost:3306/java35
// oracle的连接地址: jdbc:oracle:thin:@localhost:1521:ORCL
4. 通过连接对象, 创建SQL执行对象 (SQL执行环境)
Statement state = conn.createStatement();
5. 通过SQL执行对象 ,执行SQL语句.
state.execute(String sql语句);
6. 释放资源,连接数据库所创建的端口都需要关闭
//根据需求,有时会创建ResultSet 参数,最后也要记得释放该资源。
state.close();
conn.close();
如果在连接数据库时出现了数据库错误的问题,可以参考链接中的文章https://blog.csdn.net/xiri_/article/details/108857758
设置数据库的时区问题时,我们需要在数据库连接地址URL上添加或修改一下时区参数serverTimezone,下面引入一下我链接数据库的地址设置
url=jdbc:mysql://localhost:3306/java?characterEncoding=utf8&serverTimezone=UTC
解释:
// 数据库连接地址:jdbc:mysql://localhost:3306/java
// ? 后是对数据库进行设置的参数 ,不同参数之间用 & 连接
// characterEncoding=utf8 为设置编码方式为utf-8
// serverTimezone=UTC 设置数据库时区的函数,此处的UTC为世界时间(北京时间为东八区时间)
将数据库的时间设置为北京时间
serverTimezone 设置时间参数,将 UTC 更换成 GMT%2B 即可
url=jdbc:mysql://localhost:3306/java?characterEncoding=utf8&serverTimezone=GMT%2B
将java.util.Date的Date参数转换成sql中Date的时间格式
在java环境中使用的Date时间类通常是java.util.Date,而数据库中声明变量类型为Date时,对应的是java.sql.Date,因此当在java代码中获取java.util.Date时间对象后,需要转化为java.sql.Date类才能放入数据库中
-
创建两个类型的时间对象
//创建util包下的date对象 java.util.Date date=new java.util.Date();
-
将java.util.Date的Date参数转换成sql中Date的时间格式
PreparedStatement ps; //预编译语句 //这里的Date是java.util.Date中的,得到的是日期(年-月-日) ps.setDate(int parameterIndex, java.util.Date(date.getTime()); //这里的Time是java.util.Time中的,得到的是时间(时:分:秒) ps.setTime(int parameterIndex, java.util.Time(date.getTime()); //这里的TimeStamp是java.util.TimeStamp中的,得到的是日期+时间(年-月-日 时:分:秒) ps.setObject(int parameterIndex, java.util.TimeStamp(date.getTime())
注意:
setDate 得到的是日期(年-月-日),对应 java.util.Date 的jar包
setTime 得到的是时间(时:分:秒),对应 java.util.Time 的jar包
setObject 得到的是日期+时间(年-月-日 时:分:秒),对应 java.util.TimeStamp 的jar包