查找每个季度中两个日期之间的天数

Find days between two dates in each Quarter

我在 table (SQLITE)

中有两个日期列

现在我需要的是找出这两个日期之间每个季度出现的天数

For example let's say,

start_Date = 12-Jan-2015
end_Date = 13-Jul-2015

So result should be like:

Quarter 1 = 79 days
Quarter 2 = 91 days
Quarter 3 = 13 days
Quarter 4 = 0 days

我试过下面的查询

SELECT CASE WHEN cast(strftime('%%m', end_date) as integer) BETWEEN 1 AND 3 THEN 'Q1' WHEN cast(strftime('%%m', end_date) as integer) BETWEEN 4 and 6 THEN 'Q2' WHEN cast(strftime('%%m', end_date) as integer) BETWEEN 7 and 9 THEN 'Q3' ELSE 'Q4' END as Quarter, sum(julianday(end_date) - julianday(start_date) + 1) AS Total FROM table WHERE end_date BETWEEN '2015-01-01 00:00:00' AND '2015-12-31 00:00:00' GROUP BY Quarter

但问题是考虑到 end_date,它将显示季度中的所有天数。因此,如果 end_date 的月份是 4,那么所有日期都将显示在第 3 季度。

欢迎提出任何建议。要么只是 sqlite 查询,要么在 ios SDK 中,要么两者都使用。在任何可能的情况下。

谢谢....!!

这在 SQL 中会很笨拙,但鉴于您使用 NSDateComponents 标记了它,看来您知道您需要的基本技术。使用 NSCalendar:

提供的 NSDateComponents 方法
  • 使用component:fromDate:获取年份。

  • 使用1月1日和先前确定的年份的分量并调用dateFromComponents:.

  • 来计算Q1的开始
  • 现在循环:

    • 使用 dateByAddingUnit(或 dateByAddingComponents,如果您需要支持较旧的 OS 版本).

    • 查看开始日期和结束日期,将它们与季度的开始和结束进行比较,以计算出该特定季度有多少天(您可以使用 components:fromDate:toDate:options: 来计算天数)。

    • 下个季度重复此操作。

这些是基本步骤。