에 문자열로 MySQL의 "시간"필드 비교 :다음 정보와 함께 내가, 내 데이터베이스의 특정 행이 PHP
data:
user_id start_time end_time
405 12:00:00 14:00:00
나는 다음과 같은 SELECT 문이 : 이제
SELECT *
FROM data
INNER join users on users.user_id = data.user_id
WHERE NOT EXISTS
(SELECT * FROM data
WHERE '10:00:00' BETWEEN start_time AND end_time)
GROUP BY users.usrID");
을, 이 쿼리는 위의 행 (사용자 405)을 반환하지만, 아무도 반환하지 않는다고 생각합니다. (10:00:00은 12:00:00에서 14:00:00 사이가 아니기 때문에).
흥미롭게도 10:00:00에서 07:00:00 사이의 값을 변경하면 정상적으로 작동합니다.
이것이 작동하지 않는 이유는 무엇입니까? 데이터베이스에서 TIME으로 설정 한 필드는 다음과 같습니다. 00:00:00
대단히 감사합니다.
업데이트 :
나는 다음과 같이 주위에 내 쿼리를 변경 :
SELECT usrID,
first,
last
FROM users
WHERE user_id NOT IN (SELECT u.user_id
FROM `data` d,
`users` u
WHERE d.user_id = u.user_id
AND CAST('10:00:00' AS TIME) BETWEEN start_time AND end_time)
ORDER BY u.user_id
그리고 이것은 트릭을 할 것 같았다. 모든 도움에 감사드립니다. between
에 대한 MySQL의 설명서 페이지 당
안녕하세요. Rexem. 하위 쿼리를 서로 연관시켜야 할 필요가 있습니다. 나는 이것을 아주 잘 벗겨진 예에서 작동시킬 수있었습니다. 그러나 사용자 테이블에 가입하면 문제가 발생합니다.10시 방향 아래에있는 항목을 '제외'할 것입니다. 그러나 사용자가 테이블에 '2'개의 항목을 가지고 있고 (10:00:00, 12:00:00) 및 (13:00:00, 14:00:00)라고 가정하면 쿼리가 두 번째 집합 (10:00:00 사이가 아니기 때문에)을 설정하고 사용자를 사용할 수 있다고 돌려줍니다. 쿼리가 10:00:00을 찾으면 사용자를 완전히 무효로 할 수 있도록 어떻게 수정해야합니까? – Dodinas
신경 쓰지 마라, 나는 그것을 얻었다 고 생각한다. 내 원래 게시물에 내 설명을 참조하십시오. – Dodinas