我正在处理一个我无法解决的问题。
假设我通过一个简单的MySQL Select查询得到结果:
SELECT date_from.rights, date_to.rights FROM rights
表
rights
保留记录,描述用户需要访问的系统权限。权限受时间值(显然是FROM和TO)限制。如果
date_from
或date_to
为NULL,则权限是无限的(按时间)。表权限包含以下数据:
date_from。 。 。 。 。 。 。 。 。 date_to
2011-05-20。 。 。 。 。 。 。 。 。 2011-08-20
2011-06-20。 。 。 。 。 。 。 。 。空值
2011-03-20。 。 。 。 。 。 。 。 。 2011-04-20
空值 .. 。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20
我真正需要的SELECT查询是:
date_from。 。 。 。 。 。 。 。 。 date_to
2011-05-20。 。 。 。 。 。 。 。 。空值
2011-03-20。 。 。 。 。 。 。 。 。 2011-04-20
空值 .. 。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20
希望你明白我的意思。我只需要GROUP结果,以便在每个日期值相交的地方获得尽可能多的限时权限;)
我认为,GROUP BY子句应该可以完成工作,但我只是找不到正确的公式。如果可能的话,我也想避免使用程序。
最佳答案
我认为这是您要寻找的:
select *
from rights
where (date_from is null or date_from <= now())
and (date_to is null or date_to >= now())
祝好运。
关于mysql - 如何在MySQL Select查询中获取时间范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5890839/