假设:
如果日期落在开始日期和结束日期之间,哪条SQL语句会导致TRUE?问题在于找到结束年份,以便start_date
和获得end_date
。
答案 0 :(得分:0)
也许将日期转换为UNIX时间戳?然后它将是简单的小于或大于整数算术。
答案 1 :(得分:0)
你真的需要真/假值,还是只能选择SELECT?假设$ date包含您以'yyyy-mm-dd'格式查找的日期:
SELECT * FROM mytable WHERE $date > start_date AND date < end_date;
将年份放在一个单独的领域也有效,但看起来更丑陋并且可能会杀死表现:
SELECT * FROM mytable WHERE $date > CONCAT(year, '-', start_date) AND
$date < CONCAT(year, '-', end_date);
并且处理结束&lt;开始案例:
SELECT * FROM mytable WHERE $date > CONCAT(year, '-', start_date) AND $date <
IF(start_date < end_date,
CONCAT(year, '-', end_date),
DATE_ADD(CONCAT(year, '-', end_date), INTERVAL 1 YEAR));
答案 2 :(得分:0)
计算结束年份的一种方法(以便推导出end_date
):
end_year = start_year +
greatest( -1 *
sign(
datediff(
date(
concat_ws('-', year, end_month, end_day )
),
date(
concat_ws('-', year, start_month, start_day )
)
)
), 0
)