程序员小辰 2019-05-07 11:03 采纳率: 50%
浏览 1730
已结题

java 查数据库时间不对

cars表里有如下数据:

mysql> select * from cars;
+------+--------+--------+---------------------+---------------------+
| id | name | vendor | ctime | utime |
+------+--------+--------+---------------------+---------------------+
| 801 | China1 | China | 2019-05-07 09:45:32 | 2019-05-07 09:45:32 |
| 802 | China2 | China | 2019-05-07 09:45:37 | 2019-05-07 09:45:37 |
| 803 | Japan | Japan | 2019-05-07 09:45:37 | 2019-05-07 09:45:37 |
| 1001 | China1 | China | 2019-05-07 10:18:21 | 2019-05-07 10:18:21 |
| 1002 | China2 | China | 2019-05-07 10:18:22 | 2019-05-07 10:18:22 |
| 1003 | Japan | Japan | 2019-05-07 10:18:22 | 2019-05-07 10:18:22 |
| 1004 | China1 | China | 2019-05-07 10:18:56 | 2019-05-07 10:18:56 |
| 1005 | China2 | China | 2019-05-07 10:18:56 | 2019-05-07 10:18:56 |
| 1006 | Japan | Japan | 2019-05-07 10:18:56 | 2019-05-07 10:18:56 |
| 1201 | China1 | China | 2019-05-07 10:49:44 | 2019-05-07 10:49:44 |
| 1202 | China2 | China | 2019-05-07 10:49:44 | 2019-05-07 10:49:44 |
| 1203 | Japan | Japan | 2019-05-07 10:49:44 | 2019-05-07 10:49:44 |
+------+--------+--------+---------------------+---------------------+
12 rows in set (0.00 sec)

java中执行查询,
SELECT * FROM cars WHERE vendor='China'
根据resultSet遍历获取各列的值,ctime和utime和数据库里的有差别。
[
{
utime: "2019-05-07 10:45:32",
vendor: "China",
name: "China1",
ctime: "2019-05-07 10:45:32",
id: 801
},
{
utime: "2019-05-07 10:45:37",
vendor: "China",
name: "China2",
ctime: "2019-05-07 10:45:37",
id: 802
},
{
utime: "2019-05-07 11:18:21",
vendor: "China",
name: "China1",
ctime: "2019-05-07 11:18:21",
id: 1001
},
{
utime: "2019-05-07 11:18:22",
vendor: "China",
name: "China2",
ctime: "2019-05-07 11:18:22",
id: 1002
},
{
utime: "2019-05-07 11:18:56",
vendor: "China",
name: "China1",
ctime: "2019-05-07 11:18:56",
id: 1004
},
{
utime: "2019-05-07 11:18:56",
vendor: "China",
name: "China2",
ctime: "2019-05-07 11:18:56",
id: 1005
},
{
utime: "2019-05-07 11:49:44",
vendor: "China",
name: "China1",
ctime: "2019-05-07 11:49:44",
id: 1201
},
{
utime: "2019-05-07 11:49:44",
vendor: "China",
name: "China2",
ctime: "2019-05-07 11:49:44",
id: 1202
}
]

贴上代码部分:

            Statement statement = mysqlConnection.createStatement();
            ResultSet resultSet = statement.executeQuery(realSql);
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            int columnCount = resultSetMetaData.getColumnCount();
            List<String> columnNames = new ArrayList<>();
            for(int i=1;i<=columnCount;i++) {
                columnNames.add(resultSetMetaData.getColumnName(i));
            }
            while(resultSet.next()) {
                Map<String, Object> valuesMap = new HashMap<>();
                for(String col:columnNames) {
                    if(col.equals("ctime") || col.equals("utime")) {
                        String s = simpleDateFormat.format(resultSet.getObject(col));
                        valuesMap.put(col, s);
                    } else {
                        valuesMap.put(col, resultSet.getObject(col));
                    }
                }
                resultList.add(valuesMap);
            }

请大佬们看看问题在哪,是resultSet.getObject有什么问题还是什么。。


补充:

图片说明图片说明
这一条数据数据库里是9:45:32

  • 写回答

2条回答

  • 子系天下 2019-05-07 11:09
    关注

    首先确认是不是同一个库,其次确认是时区是否一致,最后写一个demo,单独拿出对时间处理的逻辑看是否有问题;如果会debug的话可以打个断点看下在处理日期之前的值是什么,处理之后的值是什么来锁定错误位置

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器