2012-10-22 2 views
3
SELECT * 
FROM `summary` 
WHERE submit_date = curdate() 
AND submit_date > '06:00' 
AND submit_date < '21:00' 
LIMIT 0 , 30 

이것은 오늘을 포함한 모든 날짜를 가져 오는 중입니까? submit_date는 DATETIME을 가진 열이며, 필터링해야하는 것처럼 필터링되지 않습니다. 내가 뭘 놓치고 있니? 감사!필터 쿼리 CURDATE()

답변

2

DATETIME 열인 경우 2 제한 조건은 TIME()에 의해 반환되는 값과 비교되어야하며 첫 번째 조건은 DATE() 부분으로 제한되어야합니다. 다음과 같이

SELECT * 
FROM `summary` 
WHERE 
    /* Truncate to the date only to compare against CURDATE() */ 
    DATE(submit_date) = curdate() 
    /* And truncate to the TIME() to compare against these time literals. */ 
    /* note also that the time literals may need seconds as well */ 
    AND TIME(submit_date) > '06:00:00' 
    AND TIME(submit_date) < '21:00:00' 
LIMIT 0 , 30 
+0

가 여기에 SQL 바이올린입니다. co.kr/#! 2/36496/3 –

+0

그게 전부 였어! 고맙습니다! – Mike

0

당신은, 현재 날짜의 날짜 부분과 다음 시간 부품 submit_date의 날짜 부분을 비교해야한다 : HTTP : //www.sqlfiddle

SELECT * 
FROM `summary` 
WHERE 
    DATE(submit_date) = curdate() 
AND HOUR(submit_date(BETWEEN 6 AND 21 
LIMIT 0 , 30