2012-07-14 71 views
0

我表中有2列在MySQL看起来有时像下面,显示数据

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

这是一个显示问题,并没有真正与查询机制有任何关系。所以是的,迭代结果集并对结果进行格式化 – 2012-07-14 14:53:10

+0

感谢Marc,我正在研究服务器端代码以获得此结果。只是想确保我的工作方向正确。 – 2012-07-14 16:56:59

回答

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,你应该检查一个类似的功能。

+0

我觉得它不是关于排序或格式化,我得到的数据与时间戳desc已经是的,是的,我得到的结果集后我的服务器端代码的格式日期,我需要做的就是显示该日期的所有标题,然后移动到下一个日期,显示该日期的所有标题等。 – 2012-07-14 16:59:24

+0

我想我仍然需要一些帮助。我无法超越从数据库中获取结果集。可以从服务器端代码中获取某些想法,我正在使用java.Appreciate一些高级指导。 – 2012-07-17 00:58:04

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 
+0

让我试着在这个问题上回复你。我有数以千计的数据需要在上面的模式中取出并格式化,如果记录超过100个,我需要根据这种模式进行分页。使用JSP,但我没有在JSP中做任何数据访问,它只是一个视图,我有模型/ servlet执行数据库调用,然后将数据写入请求范围。但我想我会看到你想传达的内容。 – 2012-07-17 15:04:31

+0

没有它的不工作。你认为游标可以帮助here.Get第一行的时间戳列的值,存储在变量a中,将光标移动到下一行时间戳,获取值并存储变量b.Compare a和a b,如果它们是相同的,则保持循环直到它们不相等。如果它们相等,则停止循环并在起始行和结束行之间写入所有标题。任何想法如何通过JDBC完成 – 2012-07-18 00:10:55

+0

如果要分页结果集您可以使用sql LIMIT语句:http://www.java2s.com/Code/SQL/Select-Clause/UseLIMITinSELECT.htm我编辑了代码以向查询添加限制语句。 – user1498339 2012-07-18 12:42:36