按年份范围选择数据和年份包装

时间:2012-01-23 15:34:48

标签: php mysql

我不知道这是否可能。我有一个MySQL表,其中包含广告商的季节开始和结束日期。日期不会每年更改,因此它们以MM-DD格式存储。

这些通常是在一年内,即3月1日(03-01)到10月1日的结果。 (10-01)。

但是季节可能会在一年左右结束,例如10月1日。 (10-01)至3月1日(03-01)(即他们在春季和夏季关闭)

现在我需要选择一个条目(通过PHP),其中用户输入的日期范围(例如12月1日到12月12日)属于广告客户季节开始/结束日期。

如果季节开始/结束在数学上是连续的(例如03-01 - 10-01),那么这很容易,但是当它们可能连续或不连续时我该怎么做。

很抱歉,如果我没有清楚地解释清楚但我的脑袋会爆炸......

3 个答案:

答案 0 :(得分:2)

对此数据使用正确的列类型(DATE),季节包装不成问题。

获取用户提供的日期范围适用的季节:

SELECT foo
FROM   seasons_table
WHERE  <user range low> >= season_range_low
AND    <user range high> <= season_range_high

答案 1 :(得分:1)

怎么样:

SELECT * 
  FROM table
    WHERE CASE 
          WHEN date_start > date_end THEN 
                $date_to_check >= date_start OR  $date_to_check <= date_end 
          ELSE 
                $date_to_check >= date_start AND $date_to_check <= date_end
          END;

答案 2 :(得分:0)

您应该能够在SQL中使用AND语句来检查两种可能性:

SELECT * FROM table WHERE
season_start_date <= advertiser_start_date AND
season_end_date >= advertiser_end_date OR

无论季节结束日期需要高于广告结束日期,即使它是在新的一年。这应该有用,但我同意@SoboLAN,如果你只是将年份添加到日期字段会更简单。