2

いくつかのinデータとoutdatemysqlの「datetime」値があります。指定された期間の合計カウントを返す必要があります。

元:

In time                Out Time
2012-02-02 10:00       2012-02-02 12:00
2012-02-02 09:00       2012-02-02 14:00
2012-02-02 10:00       2012-02-02 11:00

2012-02-0210:00から2012-02-0211: 00まで合計3を取得する必要があります

4

2 に答える 2

2

期間のいずれかの部分が検索期間内にある、または検索期間と「重複」してIn timeいるアイテムの数が必要であると想定しています。Out time

まず、日付の「重複」が何を意味するのかを徹底的に調べてみましょう。オーバーラップとは、次のいずれかの条件です。

                 Start1 End1
-------------------------------------------------- -------------------------------
 Start2 End2
 Start2 End2
                             Start2 End2

そして、次の条件のいずれでもありません:

                 Start1 End1
-------------------------------------------------- -------------------------------
 Start2 End2
                                                      Start2 End2

注意深く見るStart2 < End1 AND End2 > Start1と、この関係が定義されていることに気付くでしょう。これがあなたのWHERE条項になります。


したがって、次のことを試してください。

SELECT COUNT(*)
FROM myTable
WHERE '2012-02-02 10:00:00' <= `Out Time`
AND '2012-02-02 11:00:00' >= `In Time`
于 2012-10-11T06:13:21.180 に答える
1

このクエリを書く

select count(*) from table name where `In time` <= '2012-02-02 10:00' and `Out Time` >= '2012-02-02 11:00'

それはあなたにカウント3を与えます

于 2012-10-11T06:13:25.497 に答える