我在表 (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:
来计算第 1 季度的开始时间。现在循环:
使用
dateByAddingUnit
(如果您需要支持较旧的操作系统版本,则使用dateByAddingComponents
)在季度开始时添加三个月来计算下一个季度的开始时间)。查看开始日期和结束日期,将它们与季度的开始和结束日期进行比较,以确定该特定季度有多少天(您可以使用
components:fromDate:toDate:options:
来计算天数)。在下一个季度重复此操作。
这些是基本步骤。
关于ios - 查找每个季度中两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861586/