Coldfusion,输出按日期分组,今天,昨天,本周等分组的SQL结果

时间:2010-01-01 01:03:58

标签: sql mysql datetime coldfusion grouping

我正在从数据库中找到来自具有DateAdded(时间戳)列的MySQL数据库的100条记录。

我想找到一种SMART方法,在Coldfusion中显示如下记录,不会多次访问数据库。

今天: - 记录..... 昨天: - 记录..... 本周早些时候: - 记录..... 本月早些时候: - 记录..... 老年人: - 记录.....

感谢有关如何在ColdFusion中巧妙地完成这项工作的想法。

4 个答案:

答案 0 :(得分:2)

查询查询? - http://livedocs.adobe.com/coldfusion/8/htmldocs/using_recordsets_3.html#1157970

<h1>Today:</h1>
<cfquery name="todayRecords" dbtype="query">
    select *
    from originalQuery
    where DateAdded = #createODBCDate(year(now()), month(now()), day(now()))#
</CFQUERY>
<cfdump var="#todayRecords#">

您可能希望使用BETWEEN SQL运算符。请参阅:http://livedocs.adobe.com/coldfusion/8/htmldocs/using_recordsets_7.html

您也可以使用<cfqueryparam>标记。请参阅:http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_p-q_18.html#1102474

查询查询可能不是最有效的,但在我看来,这是表达你的意图的最简洁方式,它只是有效。

答案 1 :(得分:1)

多数数据库调用在大多数应用程序中的成本相当可忽略不计

但是,如果你按照时间desc选择所有记录并按顺序排序,这一切都可以在一次通话中完成。

当时间切换时(当它超过1天,超过2天,超过8天等)时结束当前部分

基本上你会在CF中使用DateCompare函数将DateAdd与该部分的截止点进行比较。一些伪代码:

今天

而dateadd&lt;明天    打印记录

昨天

而dateadd&lt; 1周前   打印记录

本周早些时候

而dateadd&lt; 1个月前   打印记录

答案 2 :(得分:1)

你必须从SQL端开始,要么是存储过程,要么是用户定义的函数,以便为每条记录添加Today / Yesterday / etc标签。

也许:

Select a, b, myFunction(DateColumn) as GroupLabel 
From myTable Order By GroupLabel

myFunction获取日期值并返回Today / Yesterday / etc

答案 3 :(得分:0)

我同意尼尔。如果是我,我会在存储过程中完成所有操作,只需让DB手持CF作为输出的最终结果。