如何编写不包含同一天的SQL"之间"

Cod*_*ome 0 sql logic sql-server-2005 date between

我希望检索myDatestartDate'和endDate' 之间的所有记录,但不返回具有完全相同日期的记录.我正在使用MS SQL 2005.

我试过了:

Select *
From myDatabase
Where empId = 145
and myDate between startDate and endDate

但是如果myDate是'11/16/2011',则上述查询将返回具有startDateendDate= '11/16/2011'的记录.这不是我想要的.我不想要有startDateendDate=的记录myDate

所以我尝试过:

Select *
From myDatabase
Where empId = 145
and myDate between startDate and endDate
and (myDate <> startDate AND myDate <> endDate)

这适用于所有情况吗?

Jef*_*ert 5

a1ex07是正确的,这将起作用

myDate > startDate AND myDate < endDate

如果你坚持使用BETWEEN那么这也会起作用

mydate BETWEEN startDate + INTERVAL 1 DAY AND endDate - INTERVAL 1 DAY

编辑:刚看到SQL Server的标签不是MySQL,所以上面是针对MySQL,SQL Server的等价物

myDate BETWEEN DATEADD(DAY, 1, startDate) AND DATEADD(DAY, -1, endDate)

  • 请注意,只要时间在等式中,您的解决方案就不是真正等效的(SQL Server 2005总是如此,因为版本2008中引入了纯`date`类型). (3认同)