程序员小辰 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 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误