这是12月的日历。(前三天和后几天并不属于本月)求一个sql,查询出当月的事件。 事件开始时间start(timestamp),事件结束时间end(timestamp),需要查询出当月和前后那几天里发生的事件(开始到结束之间的任意时间都有效)。
// start<=范围开始时间 and end>=范围开始时间 :以前就有,范围内死或者一直持续 // start>=范围开始时间 and start<=范围结束时间 :范围内生,范围内死或者一直持续
return execute(select(CalendarEvent.class, null, new String[] { "userId=?", "((start<=? and end>=?) || (start>=? and start<=?))" }), new Object[] { userId, start, start, start, end }, ResultSetHandlerFactory.CALENDAREVENT_LIST_HANDLER);######开始和结束时间明天看吧,应该可以用java计算出来######你的意思要查询日历中11月28到1月1日之间的事件么?如果是,下面的语句可以算出开始日和结束日,可以把他们放到语句中作为时间限定条件
select SUBDATE(now(), (weekday(subdate(now(), day(now())-1)) + day(now()))); select adddate(last_day(now()),(5 - weekday(last_day(now()))));######挺好的,就是想尽量不给数据库太多的压力。因为前面已经给了不少的压力了。######
你的意思要查询日历中11月28到1月1日之间的事件么?如果是,下面的语句可以算出开始日和结束日,可以把他们放到语句中作为时间限定条件 select SUBDATE(now(), (weekday(subdate(now(), day(now())-1)) + day(now()))); select adddate(last_day(now()),(5 - weekday(last_day(now()))));
最后使用了JAVA计算: http://www.oschina.net/code/snippet_2765_2063######如果在 sql 中带上一些"函数", 很可能会让mysql 认为此 sql 无法缓存. 如果此SQL执行比较多的话,可以考虑其它的优化方式. 并不是SQL的查询次数多,mysql 压力就会大. 要综合应用环境,缓存和IO.######
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。