6

アドバイスやヒントを事前にありがとう!

mysql データベースに予約テーブルがありますtable1。開始日と終了日が含まれています。取得する必要がある情報を含む別のテーブルがtable2ありますが、特定の日付が のどの行のどの日付の間にも存在しない場合のみですtable1

例;

select table2.testfield
FROM table2, table1
WHERE '2011-02-24 18:00:00'
NOT BETWEEN table1.start 
AND table1.finish

しかし、私はそれを機能させることができません! 助言がありますか?

4

2 に答える 2

14

これは機能するはずですが、もっと似ているはずです

select table2.testfield
FROM table2, table1
WHERE table1.YourField = '2011-02-24 18:00:00' 
AND
NOT BETWEEN table1.start AND table1.finish

これはまた、あなたのtable1.startandtable1.finishフィールドがタイプであると仮定しますDateTime。そうでない場合は、フィールドのキャストを試すことができます

select table2.testfield
    FROM table2, table1
    WHERE table1.YourField = '2011-02-24 18:00:00' 
    AND
    NOT BETWEEN Cast(table1.start as DateTime) AND Cast(table1.finish As DateTime)

編集あなたの質問を見て、日付はおそらくデータベース値ではないことに気付きました:)したがって、メソッドは機能するはずですが、文字列を日時にキャストする必要がある場合があります。

于 2011-02-24T15:12:53.917 に答える
3

じゃあこういうこと?

select table2.testfield
FROM table2, table1
WHERE 
   table1.start > convert(datetime,'2011-02-24 18:00:00')
   or table1.finish < convert(datetime,'2011-02-24 18:00:00')
于 2011-02-24T15:13:07.697 に答える