我正在处理一个我无法解决的问题。
假设我通过一个简单的MySQL Select查询得到结果:

SELECT date_from.rights, date_to.rights FROM rights


rights保留记录,描述用户需要访问的系统权限。

权限受时间值(显然是FROM和TO)限制。如果date_fromdate_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/

10-15 18:39