0

次の質問に答えようとしています。

2007 年 10 月の正午から午後 5 時までの間に開始されるすべてのエンゲージメントを表示する

次のクエリを試しました。

SELECT EngagementNumber, StartDate, StartTime
FROM Engagements
WHERE StartDate <= CAST('2007-10-31' As DATE)
AND EndDate >= CAST('2007-10-01' AS DATE)
AND StartTime Between CAST('12:00:00' AS TIME) AND CAST('17:00:00' AS TIME)

ただし、次のエラーが発生しています。

メッセージ 402、レベル 16、状態 1、行 1 データ型 datetime と time は、以下の演算子では互換性がありません。

これを SQL Server データベース 2008R2 バージョンで実行していますが、なぜこれが起こっているのか誰か教えていただけないでしょうか?

ありがとう

4

3 に答える 3

2
SELECT 
       EngagementNumber, 
       StartDate, 
       StartTime
FROM 
       Engagements
WHERE
      StartDate <= '2007-10-31' 
      AND EndDate >= '2007-10-01' 
      AND convert(char(8), StartTime , 108) BETWEEN '12:00:00' AND '17:00:00'

108hh:mm:ss の定数出力

于 2013-09-18T11:36:55.570 に答える
1

この方法を試してください

SELECT  EngagementNumber, StartDate, StartTime 
FROM    Engagements
WHERE   StartDate <= '2007-10-31T12:00:00.000' 
  AND   EndDate >=  '2007-10-01T17:00:00.000'

これは、開始日と終了日が日時データ型の場合に機能します

于 2013-09-18T11:34:07.137 に答える
0

私はちょうど使用しますdatepart(hour)

SELECT EngagementNumber, StartDate, StartTime
FROM Engagements
WHERE StartDate <= CAST('2007-10-31' As DATE) AND
      EndDate >= CAST('2007-10-01' AS DATE) and
      datepart(hour, StartTime) >= 12 and datepart(hour, EndTime) < 17;
于 2013-09-18T11:40:46.380 に答える