如何数据库设置时区为北京时间?怎么将java.util.Date的Date参数转换成sql中Date的时间格式?

如何数据库设置时区为北京时间?怎么将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类才能放入数据库中

  1. 创建两个类型的时间对象

    //创建util包下的date对象
    	java.util.Date date=new java.util.Date();
    
  2. 将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包

猜你喜欢

转载自blog.csdn.net/xiri_/article/details/109673612