0

myDateと'endDate'の間にあるすべてのレコードを取得しようとしていますstartDateが、まったく同じ日付のレコードを返しません。私はMSSQL2005を使用しています。

私が試してみました:

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

ただし、myDateが「2011年11月16日」の場合、上記のクエリはastartDateendDate=「2011年11月16日」のレコードも返します。これは私が望むものではありません。startDateaとendDate=を持つレコードは必要ありません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

編集:MySQLではなくSQL Serverのタグを見ただけなので、上記はMySQLの場合であり、SQLServerに相当するものは

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 に答える