0

我在 mysql 的表中有 2 列,有时如下所示,

 title    timestamp
--------------------
 test1     1/7/2012
 test2     1/7/2012
 test3     1/7/2012
 test4     2/7/2012
 test5     3/7/2012.

我正在寻找的结果是这样的,

**1/7/2012**
   test1
   test3
**2/7/2012**
   test4
 **3/7/2012**
   test5

有人可以在这里帮助他吗?这可以通过 MySQL 查询来完成,还是我需要在服务器端迭代结果集,然后格式化结果集以进行显示。

4

2 回答 2

0

如果我正确理解了您想要的内容,则代码应如下所示:

int itemsInPage = 100; //Number of item to display in page
int currentPage = 1; //Index of current page, starting from 1

PreparedStatement ps = con.prepareStatement("select title,timestamp,str_to_date(timestamp,'%d/%m/%Y') as date from table_name order by date,title limit " + ((currentPage - 1) * itemsInPage) + ", " + itemsInPage);

ResultSet rs = ps.executeQuery();

String prevTimestamp = null;

while(rs.next()) {
    if (prevTimestamp == null || !prevTimestamp.equals(rs.getString(2))) {
        System.out.println("*** "+rs.getString(1)+" ***");
    }
    System.out.println(rs.getString(1));
    prevTimestamp = rs.getString(2);
}

如果你在 jsp 中编码,你应该使用

out.print(...);

代替

System.out.println
于 2012-07-17T07:22:36.720 回答
0

您可以使用这样的查询:

select title,timestamp,str_to_date(timestamp, '%d/%m/%Y') as date from table_name order by date,title;

迭代结果集并仅在时间戳更改时打印。

str_to_date 是一个 MySQL 函数,它将字符串转换为日期,用于排序。如果你没有使用 MySQL,你应该检查一个类似的函数。

于 2012-07-14T15:01:33.890 回答