【问题标题】:Display Data Based on Date根据日期显示数据
【发布时间】:2012-07-14 03:24:36
【问题描述】:

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

【问题讨论】:

  • 这是一个显示问题,与查询机制没有任何关系。所以是的,迭代结果集并格式化结果
  • 谢谢 Marc,我正在编写服务器端代码来解决这个问题。只是想确保我的工作方向正确。

标签: java mysql sql jstl resultset


【解决方案1】:

如果我理解正确,代码应该是这样的:

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

【讨论】:

  • 让我试着回复你这个问题。我有数千行数据需要提取并按上述模式格式化,如果记录超过 100,我需要基于分页在这种模式上。是的,我确实使用 JSP,但我没有在 JSP 中进行任何数据访问,它只是一个视图,我有模型/servlet,它执行 DB 调用,然后在请求范围内写入数据。但我想我看到了你正在尝试传达。
  • 不,它不起作用。你认为Cursors可以在这里提供帮助吗。获取时间戳COLUMN第一行的值,存储在变量a中,将光标移动到时间戳的下一行,获取值并存储它变量b。比较a和b,如果它们相同,继续循环直到它们不相等。如果它们相等,停止循环并在开始行和结束行之间写入所有标题。任何想法如何通过JDBC完成跨度>
  • 如果要对结果集进行分页可以使用sql LIMIT语句:java2s.com/Code/SQL/Select-Clause/UseLIMITinSELECT.htm我编辑了代码,为查询添加了limit语句。
【解决方案2】:

您可以使用这样的查询:

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

迭代结果集并仅在时间戳发生变化时打印它。

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

【讨论】:

  • 我觉得它不是关于排序或格式化,我已经得到带有时间戳 desc 的数据,是的,我在得到结果集后在我的服务器端代码中格式化日期,我需要做的就是显示所有该日期的标题,然后移至下一个日期,显示该日期的所有标题,依此类推。
  • 我想我仍然需要一些帮助。我无法从数据库中获取结果集。有人可以思考一下我应该如何从服务器端代码开始。我正在使用 java.Appreciate一些高级别的指导。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-10
  • 2015-06-27
  • 1970-01-01
相关资源
最近更新 更多