我的问题是,在一个包含7列的数据库表中,我有一个日期类型的列,称为“fecnac”。通过mysqlworkbrench,我执行了一个简单的查询:
"SELECT * FROM tblAsegurados ORDER BY Name,Nss"
此查询的结果是,将显示表的“我的”列或字段的信息,该表包含一个名为“fecnac”的列,该列显示正确的日期,例如“2018-12-31”。
mysqlworkbrench结果图像
然而,我在intellij idea中开发了一个应用程序来执行相同的查询,查询“本身”返回的日期少了一天,即显示“2018-12-30”。在我的数据库“tblasegurados”表的“fecnac”列中找到的所有日期也是如此。
public ArrayList<Asegurados> getAseguradosList(){
ArrayList<Asegurados> aseguradosList = new ArrayList<Asegurados>();
Connection connection = getConnection();
var query = "select * from tblAsegurados order by Nombre,Nss";
Statement st;
ResultSet rs;
try{
st = connection.createStatement();
rs = st.executeQuery(query);
Asegurados asegurado;
while(rs.next()){
asegurado = new Asegurados(
rs.getString("Nss"),
rs.getString("Nombre"),
rs.getString("Curp"),
rs.getBoolean("Esposa"),
rs.getInt("Semcot"),
rs.getInt("Hijos"),
rs.getDate("Fecnac"));
aseguradosList.add(asegurado);
System.out.println(asegurado.getFecnac());
System.out.println(rs.getDate("Fecnac"));
System.out.println(rs.getDate(7));
}
} catch (Exception e){
e.printStackTrace();
}
return aseguradosList;
}
类“asegurados”定义了“java.sql.date”类型的属性,以接收“rs.getdate(fecnac)”。
因为我确信通过查询返回,在我的代码中,您可以看到我为每个字段日期创建了一个“system.out.println”,并且在这三个字段中,我从日期中得到的值都是相同的,只需少一天。
有人能帮我知道发生了什么吗?
控制台调试intellij idea映像
1条答案
按热度按时间5cg8jx4n1#
我已经找到解决办法了。在我的代码的一部分中,时区的参数定义为:servertimezone=utc
我将其设置为:servertimezone=america/mexico\u city,这是对应于我的区域,准备好了!日期显示正确。