-1

我们有人在两个特定日期(例如 2013 年 1 月 15 日至 2013 年 2 月 3 日)之间租房。我的任务是显示一个“活跃”报告,显示每个月有多少活跃出租。例如,这将显示在 1 月计数和 2 月计数中。

对此的任何帮助将不胜感激。我一直在寻找类似的东西,但没有找到任何东西。我对 sql 的了解主要是简单的添加/更改/删除代码。

4

3 回答 3

2
SELECT * FROM `rentals` WHERE `date` BETWEEN '2013-03-04' AND '2013-04-04'

显然用你自己的替换表名和列名......这是MySQL,你没有指定你在发布时使用的数据库软件。

于 2013-03-05T14:31:34.810 回答
0

查找在两个日期之间“活动”的记录的通用方法是

 ...
 WHERE startDate <= @periodEnd AND endDate >= @periodStart
于 2013-03-05T14:29:38.493 回答
0

如果您想在每个月中查找活动,您需要从月份列表开始,然后将它们与活动记录进行比较。让我假设你每个月都有一个开始。

select months.yyyymm, count(*) as NumActives
from (select distinct to_char(startdate, 'yyyy-mm') as yyyymm
      from activity
     ) as months join
     activity a
     on yyyymm between to_char(a.startdate, 'yyyy-mm') and to_char(a.enddate, 'yyyy-mm')
group by months.yyyymm

我使用 Oracle/Postgres 函数to_char()将日期转换为年月表示。其他数据库有其他方法来实现相同的目标。

于 2013-03-05T14:35:23.947 回答