根据日期显示数据

时间:2012-07-14 14:49:41

标签: java mysql sql jstl resultset

我在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查询完成,或者我需要在服务器端迭代结果集,然后格式化结果集以便显示。

2 个答案:

答案 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