SQL从期间计数天数
我的问题是,我想从5月起的日期列为日期,但是如下所示,某些事件从5月的第一天开始,而去年五月的某些事件开始。
有我的代码:
SELECT * FROM rooms p, bookings r WHERE p.id_room = r.id_room group by
r.id_room having
case
WHEN (month(r.start_date) = 5 AND month(r.end_date) = 5) THEN
sum(datediff(r.end_date, r.start_date)) < 21
WHEN (month(r.start_date) < 5 AND month(r.end_date) = 5) THEN
sum(datediff(r.end_date, '2022-05-01 12:00:00')) < 21
WHEN (month(r.start_date) = 5 AND month(r.end_date) > 5) THEN
sum(datediff('2022-05-31 12:00:00', r.start_date)) < 21
END;
编辑1
我只会在底部谈论示例。
例如
date_start- 6月3日
date_end- 6月15日
最大(date_start,'2022-05-1')6月3日返回 最少(date_end,'2022-05-31')5月31日回溯
(date_end,date_start)返回-3,但仍将其计为“ 5月”,而应跳过它
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通过使用函数
code> dist>
和最大()
:另外,请使用适当的加入。
Simplify the
HAVING
clause by using the functionsLEAST()
andGREATEST()
:Also, use a proper join.