如何在MySQL Select查询中获取时间范围
我正在处理一个我无法处理的问题。 比方说,我通过一个简单的 MySQL Select 查询获得结果:
SELECT date_from.rights, date_to.rights FROM rights
表 rights
保留描述用户需要访问的系统权限的记录。
权限受时间值限制,显然是 FROM 和 TO。如果 date_from
或 date_to
为 NULL,则权限不受限制(时间方面)。
表 Rights 包含以下数据:
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年3月20日。 。 。 。 。 。 。 。 2011-04-20
无效的 .. 。 。 。 。 。 。 。 。 。 。 。 。 2011-01-20
希望您明白我的意思。我只需要对结果进行分组,以便在每个日期值相交的情况下获得尽可能广泛的限时权限;)
我认为,GROUP BY 子句应该可以完成这项工作,但我只是找不到正确的公式。如果可能的话,我也想避免程序。
I'm dealing with a problem I just can't get on with.
Let's say, I get results with a simple MySQL Select query:
SELECT date_from.rights, date_to.rights FROM rights
Table rights
keeps records describing users' permissions of the system that they need to access.
The permissions are limited by time values, obviously FROM and TO. If date_from
or date_to
is NULL, permission is unlimited (time-wise).
The table rights contains the following data:
date_from . . . . . . . . . date_to
2011-05-20 . . . . . . . . . 2011-08-20
2011-06-20 . . . . . . . . . NULL
2011-03-20 . . . . . . . . . 2011-04-20
NULL .. . . . . . . . . . . . . 2011-01-20
What I realy need to get with a SELECT query is:
date_from . . . . . . . . . date_to
2011-05-20 . . . . . . . . . NULL
2011-03-20 . . . . . . . . . 2011-04-20
NULL .. . . . . . . . . . . . . 2011-01-20
Hope You get what I mean by all this. I just need to GROUP results in order to get as wide range of time-limited permissions as possible where every single date value intersect ;)
I think, GROUP BY clause should do the job, but I just can't find the right formula. Also I would like to avoid Procedures, if possible.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想这就是您正在寻找的:
祝您好运。
I think this is what you're looking for:
Good luck.