0

我希望检索介于 'endDate' 和 'endDate'myDate之间的所有记录startDate,但不要返回日期完全相同的记录。我正在使用 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)

这适用于所有情况吗?

4

5 回答 5

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)

于 2011-11-18T17:03:10.883 回答
4

我不明白为什么你必须使用BETWEEN...只是myDate>startDate AND myDate<endDate会做的工作。

于 2011-11-18T17:00:06.303 回答
1

假设您要包含 myDate 可以是 startDate 和 endDate 之一但不能同时是两者的记录,这应该有效:

Select *
From myDatabase
Where empId = 145
and myDate between startDate and endDate
and startDate <> endDate
于 2011-11-18T17:11:46.727 回答
0

您需要使用除BETWEEN. 试试这个:

SELECT *
FROM myDatabase
WHERE empID = 145
AND (myDate > startDate) and (myDate < endDate)
于 2011-11-18T17:02:54.193 回答
0

BETWEEN用途>=<=

>如果您不希望它与<端点匹配,您只需要使用。

SELECT *
FROM myDatabase
WHERE empId = 145
AND myDate>startDate and myDate<startDate;
于 2011-11-18T17:07:50.690 回答