我在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查询完成,或者我需要在服务器端迭代结果集,然后格式化结果集以便显示。
答案 0 :(得分: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,则应检查类似功能。
答案 1 :(得分: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