我不知道这是否可能。我有一个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),那么这很容易,但是当它们可能连续或不连续时我该怎么做。
很抱歉,如果我没有清楚地解释清楚但我的脑袋会爆炸......
答案 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,如果你只是将年份添加到日期字段会更简单。