我有桌子
---------+-----------+------------------+--------------------+ | id | user_id | start_date_time | end_date_time | +---------+---------+-------------------+--------------------+ | 1 | 11 |2019-11-17 20:10:00|2019-11-17 21:05:00 | | 2 | 11 |2019-11-17 20:18:00|2019-11-17 20:35:00 | | 3 | 11 |2019-11-17 20:32:00|2019-11-17 21:18:00 | | 4 | 11 |2019-11-17 20:40:00|2019-11-17 20:50:00 | | 5 | 11 |2019-11-17 20:45:00|2019-11-17 21:20:00 | | | | | | +---------+---------+-------------------+--------------------+
Scenario 1 - If i query for all greater than '2019-11-17 20:18:00' I need to get all records. Scenario 2 - If i query for all possible dates greater or equals '2019-11-17 21:18:00' It should return record 3 and 5. 对于任何给定的时间,应查找Start_date_time和End_date_time,其中应将给定的时间视为开始时间,并应查找适当的end_date_time并输出结果。
简而言之,应将输入时间作为起始范围,并应查找End_date_time并给我之间的所有值。
我怎样才能做到这一点?
我在db-fiddle https://www.db-fiddle.com/f/bPk1CYioL6cVasStZKzQ4j/7上尝试了以下方法
如果我查询给定时间(例如(2019-11-17 20:18:00))中的所有记录,则应将输入作为范围的开始日期时间,并寻找最大的end_date_time并给我它们之间的记录。例如,2019-11-17 20:18:00此输入采用范围val1之间的范围2019-11-17 20:18:00到2019-11-17 21:20:00最高结束日期之间的范围,并给我之间的所有记录。如果我用输入查询,2019-11-17 21:05:00则应将起始范围val1作为2019-11-17 21:05:00并2019-11-17 21:20:00输出1,3,5记录。
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要求(具有您期望的结果)非常简单:
select * from times where ? <= end_date_time 用?您要查询的日期时间替换。