【发布时间】:2013-07-07 23:42:58
【问题描述】:
我有一张桌子 -
test_table(booking_id, booking_description, start_date, end_date)
样本数据 -
1 | Some booking | 06/30/2013 | 08/01/2013
2 | Some new one | 08/05/2013 | 09/01/2013
3 | Some new two | 09/03/2013 | 09/05/2013
现在我想使用一些 java 代码生成一个每月的 xml 文件(没问题,我会写),我会将月份和年份(基本上是月份的开始和结束日期)传递给 mysql 查询和我想要一些表作为 -
月 = 7,2013 年
1 | Some booking | 07/01/2013
1 | Some booking | 07/02/2013
...
月 = 9,年 = 2013
2 | Some new one | 09/01/2013
| | 09/02/2013
3 | Some new two | 09/03/2013
...
我希望使用从开始日期到结束日期的 java 循环并查询 mysql 以找出该日期是否在日期范围内,如果出现,我会添加详细信息,否则我会添加空白。但这将是一种可怕的方法(将进行 30 次 mysql 查找),我认为它是最后的选择。
有没有其他方法可以通过一两个mysql查询并获取格式的数据。
编辑:
month = 7, year = 2013
Select *
from booking_details
where month(start_date) <= 7 and year(start_date) <= 2013 and
month(end_date) >= 7 and year(end_date) >= 2013
我开发了这个查询,但仍然不确定它是否适用于所有可能的场景。
【问题讨论】:
-
您要对照您传入的月份/年份、start_date 或 end_date,或两者检查哪一列?
-
只有当日期位于表中的某个日期范围内时才应获取数据,否则不会为该日期选择任何数据。
-
您要检查 2 个日期范围吗?因此,如果您在 2013 年 7 月通过,您想查看开始日期或结束日期是否在 2013 年 7 月 1 日和 2013 年 7 月 31 日之间?
-
是的,我的意思是说,如果我过了 7/2013,它应该通过检查表中所有预订的开始和结束日期来获取本月的所有预订。
标签: mysql database date-range