我正在尝试解决这个select语句。我的问题是列出一个月和一年内正在进行的所有锦标赛。
举个例子,我想列出
2005年3月所有正在进行的锦标赛。
我有以下专栏:
表:锦标赛(id_champ,name,startDate,endDate)
如何列出2005年3月进行中的所有锦标赛?
我试着这样做:
SELECT * from championships
where (month(startDate) <= 3
and year(startDate)<=2005)
and (month(startDate)<=3 and year(endDate)<=2005
在座的任何人都知道解决它的正确方法或最好的方法?
发布于 2014-12-06 07:04:46
要在2005年3月捕获任何活动:
select
*
from
championships
where
year(enddate) = 2005
and 3 between month(startdate) and month(enddate).
发布于 2014-12-06 07:07:20
Select *
From championships
where (startdate < `2005/4/1`) AND (enddate > '2005/2/28')
这将查找在2005年4月1日之前开始并在2005年2月28日之后的任何时间结束的所有冠军。
使用dateadd实际上是最好的,用来处理闰日之类的事情。因此,请考虑:
Select *
From championships
where (startdate < dateadd(1, mm, `2005/3/1`)) AND (enddate > dateadd(-1, dd, '2005/3/1' ) )
现在,您不必让代码计算开始日期项的月份的最后一天,也不必计算结束日期的月份的最后一天。
https://stackoverflow.com/questions/27325996
复制相似问题