【问题标题】:Find days between two dates in each Quarter查找每个季度中两个日期之间的天数
【发布时间】:2015-05-05 20:41:36
【问题描述】:

我在表中有两个日期列 (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,它将显示 Quarter 中的所有天。因此,如果 end_date 的月份是 4,那么所有天都将显示在第 3 季度。

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

谢谢....!!

【问题讨论】:

    标签: ios iphone sqlite nsdate nsdatecomponents


    【解决方案1】:

    这在 SQL 中会很笨拙,但鉴于您已将其标记为 NSDateComponents,看来您知道所需的基本技术。使用NSCalendar提供的NSDateComponents方法:

    • 使用component:fromDate: 获取年份。

    • 使用月份 1、日期 1 和先前确定的年份的分量并调用 dateFromComponents: 来计算第一季度的开始。

    • 现在循环:

      • 使用dateByAddingUnit(或dateByAddingComponents,如果您需要支持较旧的操作系统版本)将本季度的开始时间加上三个月来计算下一季度的开始时间。

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

      • 在下个季度重复此操作。

    这些是基本步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-17
      • 2017-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多