请帮助我在两个日期之间选择节目。
要求是开始日期和结束日期将分为两列。应根据它们之间的范围记录进行选择。
让我们举一个真实的例子..
日期分为两个:StartDate
和EndDate
。
如果我想选择7月10日之间的比赛和7月14日,我可以写一个像这样的查询:
SELECT * FROM tblMatch
WHERE (StartDate BETWEEN '7/9/14' AND '7/13/14' )
and (EndDate BETWEEN '7/9/14' AND '7/13/14')
但如果指定范围内有错误,我需要根据StartDate或End Date选择正确的匹配。
如果用户搜索:
StartDate:7/10/14 -- 10 July 2014
EndDate: 7/15/14 -- 15 July 2014
or
StartDate:7/8/14 -- 8 July 2014
EndDate: 7/14/14 -- 14 July 2014
然后应该选择在我的情况下首先匹配的范围之间的匹配!!
UPDATE 我的StartDate和EndDate只是Sql Date数据类型......所以请在考虑转换问题之前先考虑一下......
根据范围,应选择它们之间的事件。
答案 0 :(得分:1)
请参阅日期格式详情:Date format URL
-- 101 is forma "mm/dd/yy":
select * from tblMatch
where (CONVERT(VARCHAR(8),StartDate,101) between '07/09/14' and '07/13/14' )
and (CONVERT(VARCHAR(8),EndDate,101) between '07/09/14' and '07/13/14')
答案 1 :(得分:0)
DECLARE @StartDate1 DATETIME = 7/10/14;
DECLARE @EndDate1 DATETIME = 7/15/14;
DECLARE @StartDate2 DATETIME = 7/8/14;
DECLARE @EndDate2 DATETIME = 7/14/14;
SELECT * FROM tblMatch
WHERE (StartDate > @StartDate1 AND EndDate < @EndDate1) OR (StartDate > @StartDate2 AND EndDate < @EndDate2);
答案 2 :(得分:0)
select * from tblMatch
where (CONVERT(VARCHAR(10),StartDate,110) between '12/01/14' and '12/31/14' )
and (CONVERT(VARCHAR(10),EndDate,110) between '12/01/14' and '12/31/14')
此处的日期格式为"MM/dd/yyyy"
。