在几个时间范围内计算天数

时间:2010-02-12 11:18:35

标签: sql mysql

我需要计算在一组时间范围内完全或部分下降的天数。

范围不重叠,但同一天可能有很多。

例如,给定:

    +---------------------+---------------------+
    | time_start          | time_end            |   
    +---------------------+---------------------+
    | 2009-12-10 23:59:00 | 2009-12-11 01:38:00 |
    | 2009-12-13 15:40:00 | 2009-12-13 15:45:00 |
    | 2009-12-13 15:45:00 | 2009-12-13 15:50:00 |
    | 2009-12-13 15:53:00 | 2009-12-13 15:56:00 |
    | 2009-12-14 17:08:00 | 2009-12-14 17:12:00 |
    | 2009-12-16 07:23:00 | 2009-12-18 14:32:00 |
    +---------------------+---------------------+

结果应该是7(第10,11,13,14,16,17和18天)。

任何有关如何在mysql中实现此功能的提示都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我不是MYSQL开发者,但在MSSQL中我会

  • 建立一个日期表(一张表格,其中包含1900到2100之间的每个日期的记录,至少足以覆盖您正在查看的范围)。
  • 从上表到日期表中的连接,其中date_start在time_start和time_end之间
  • 然后计算不同的天数

这方面的关键是日期表。

希望这能让你开始。