0

我有一张桌子 -

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

我开发了这个查询,但仍然不确定它是否适用于所有可能的场景。

4

1 回答 1

0

根据我对您想要这样的问题的理解:

declare @date datetime
Select booking_id, booking_description, start_date --you don't indicate which date field you want in the results
from test_table
where (start_date between @date and date_add(@date, INTERVAL 1 MONTH))
or (end_date between @date and date_add(@date, INTERVAL 1 MONTH))

SQL 可能不准确,我知道 TSQL 不是 MySQL,但这应该很接近。

于 2013-07-10T07:37:04.837 回答