2011-05-04 64 views
1

我正在处理一个我无法解决的问题。 比方说,我得到的结果与一个简单的MySQL Select查询:如何在MySQL中获取时间范围选择查询

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。 。 。 。 。 。 。 。 。 NULL
2011-03-20。 。 。 。 。 。 。 。 。 2011-04-20
NULL ..。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20

我真的需要得到一个SELECT查询:

date_from。 。 。 。 。 。 。 。 。 date_to

2011-05-20。 。 。 。 。 。 。 。 。 NULL
2011-03-20。 。 。 。 。 。 。 。 。 2011-04-20
NULL ..。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20

希望你明白我的意思了。我只需要GROUP结果,以获得尽可能广泛的时间限制权限,在每个日期值相交的地方;)

我认为,GROUP BY子句应该做这项工作,但我无法找到正确的公式。如果可能的话,我也想避免程序。

+1

您的2个“表”或您需要SQL查询执行的示例对您的问题描述不够。请回答这些问题:1.什么是你的表格模式? (表格中有哪些字段)以及2.给出一些示例数据和3.结果集应该是什么样子? – 2011-05-04 23:09:46

回答

0

我认为这是你在找什么:

select * 
from rights 
where (date_from is null or date_from <= now()) 
and (date_to is null or date_to >= now()) 

好运。

+0

艾伦,谢谢你的回复,不幸的是,这不是我所需要的。这太容易了:]并根据当前日期给我一个结果。但我只需要将我已经通过SELECT查询获得的结果进行分组。我已经有了一个SELECT查询,并给出了某些结果(date_from&date_to),我只需要找到这些结果的交集,并完成我之前的文章中描述的工作。 ;) – Ondrej 2011-05-05 04:54:42