2017-01-26 4 views
1
In     Name   Out 
2017-01-01 10:00:00 Sam    2017-01-01 17:00:00 
2017-01-18 10:00:00 James   2017-01-18 12:00:00 
2017-01-18 10:00:00 John   NULL   -> means still in office 

たとえば、2017-01-18 11:00:00にオフィスにいるすべての人を見つけるにはどうすればよいですか?mysqlユーザが期間内に存在するかどうかを調べる(ヌルが存在する場所)

SELECT * FROM Table WHERE '2017-01-08 11:00:00' BETWEEN IN AND OUT 

- >これはJamesを返します。

SELECT * FROM Table WHERE '2017-01-08 11:00:00' BETWEEN IN AND NOW() 

(ヤコブとヨハネする必要があります) - >これは誰でも助けることができるサム、ヤコブ、ヨハネ(のみヤコブとヨハネする必要があります)

返しますか?何とかNULL(Out)Columnを現在のタイムスタンプに置き換える必要があります。しかし、NOW()を使用すると、BETWEEN文に問題が発生します。

+1

ではところで列の貧しい人々の名前です – Strawberry

答えて

0

はこれを試してみてください:

SELECT * 
FROM myTable 
WHERE '2017-01-18 11:00:00' BETWEEN `IN` AND COALESCE(`OUT`, NOW()) 

クエリは、現在の日付/時刻値でカラムOUTNULL値を置き換えるためにCOALESCEを使用しています。

Demo here

関連する問題