2017-01-12 7 views
0

私はmysqlを使用しており、タイムスタンプの範囲内にいるユーザを見つける必要があります。 1つの列は、ユーザーが入ったときに注意することで、もう1つは、ユーザーが外出したときに注意することです。mysqlは同じ行のタイムスタンプ列を検索範囲に比較します

  In      Out      Name 
Row1 2017-01-10 08:00:00  2017-01-10 15:00:00  Sam 
Row2 2017-01-10 11:00:00  2017-01-10 17:00:00  Tim 


SELECT * FROM `TABLE` WHERE In > '2017-01-10 09:00:00' AND Out < '2017-01-10 13:00:00' 

OR(誰もが、彼らが去るにし、後に来る前に)

SELECT * FROM `TABLE` WHERE In > '2017-01-10 07:00:00' AND Out < '2017-01-10 18:00:00' 

彼らは午前8時から午後1時または午前7時まで午後6時までの時間帯の間にオフィスにいるので、これはどちらのユーザーを返す必要があります。しかし、それは空の行を返します。誰も助けることができますか?

答えて

0

テーブルに指定された時間帯のレコードはありません。だから何も返さない。コメント我々は範囲について話すとき、私たちは2つの値を指定

から:

あなたのクエリが

SELECT * 
FROM TABLE 
WHERE '2017-01-10 09:00:00' BETWEEN IN AND OUT 
AND '2017-01-10 13:00:00' BETWEEN IN AND OUT 

編集のようにする必要があります。したがって、前述の2つの値の範囲には1人のユーザーしかいません。可能性のあるすべてのユーザーを返すことが懸念される場合は、ANDORに置き換えてください。

は、だからあなたの場合のために、クエリが

SELECT * 
FROM TABLE 
WHERE '2017-01-10 09:00:00' BETWEEN IN AND OUT 
OR '2017-01-10 13:00:00' BETWEEN IN AND OUT 
+0

になりますこれは、2人のユーザーを返さない、ありがとうございますが。サムは8時に、ティムは11時に、検索範囲は午前9時から午後1時の間であり、両方のユーザーを返すべきです。 – lee

+0

ありがとうございます。 OR作品が見つかりましたが、私が検索範囲を「2017-01-10 07:00:00」と「2017-01-10 18:00:00」の間に設定した場合私は結果が得られません。私は両方のユーザーが時間範囲内に入るようにする必要があります。助言がありますか? – lee

+0

OR演算子 'SELECT * FROM TABLE WHERE In> '2017-01-10 07:00:00'またはOUT '<2017-01-10 18:00:00'' @ lee –

関連する問題