私が知る限り、LeaveFromとLeaveToの間で選択した月と重複するすべての行が必要です。ドキュメントとしていくつかのサンプル日付を提供しました。
declare @yourtable table(LeaveFrom datetime, LeaveTo datetime)
insert @yourtable values('2012-05-26 12:00:00', '2012-06-30')
insert @yourtable values('2012-01-26 12:00:00', '2012-12-30')
insert @yourtable values('2012-01-26 12:00:00', '2012-04-30')
insert @yourtable values('2012-05-26 12:00:00', '2012-12-30')
insert @yourtable values('2012-01-26 12:00:00', '2012-05-30')
insert @yourtable values('2012-06-26 12:00:00', '2012-12-30')
insert @yourtable values('2011-01-01 12:00:00', '2011-01-01')
declare @month tinyint = 5
declare @year int = 2012
-- calculate a data corresponding to month and year (2012-05-01)
declare @date datetime= dateadd(month, (@year-1900) * 12 + @month-1, 0)
select * from @yourtable
where datediff(month , LeaveFrom, @date) between 0 and datediff(month , LeaveFrom, LeaveTo)
編集:同じ結果を持つ別の可能な方法:
select * from @yourtable
where @date between dateadd(month, datediff(month, 0, LeaveFrom), 0)
and dateadd(month, datediff(month, 0, LeaveTo), 0)
結果:
LeaveFrom LeaveTo
----------------------- -----------------------
2012-05-26 12:00:00.000 2012-06-30 00:00:00.000
2012-01-26 12:00:00.000 2012-12-30 00:00:00.000
2012-05-26 12:00:00.000 2012-12-30 00:00:00.000
2012-01-26 12:00:00.000 2012-05-30 00:00:00.000