2013-03-06 3 views
0
SELECT 
    doctors. fullname, 
    dutyroster.date, 
    dutyroster.time 
FROM 
    dutyroster 
INNER JOIN doctors ON doctors.docid = dutyroster.docid 
WHERE doctors.docid = $doc_id AND 
dutyroster.date = DATE(NOW()) AND DATE(NOW())+ INTERVAL 1 DAY 
ORDER BY dutyroster.`date` ASC"; 

Этот запрос используется для поиска конкретных сведений врачей из таблицы, называемой дежурным дежурным. Я хочу получить информацию о расписании документов для текущего дня и только для комментариев .. но это не работает.mysql query get today and tommrows date

и я сделал второй, который также не работает, так как она возвращает текущий и все последующие даты также

SELECT 
    doctors. fullname, 
    dutyroster.date, 
    dutyroster.time 
FROM 
    dutyroster 
INNER JOIN doctors ON doctors.docid = dutyroster.docid 
WHERE doctors.docid = $doc_id AND 
DATE_SUB(CURDATE(),INTERVAL 2 DAY) <= dutyroster.date 
ORDER BY dutyroster.`date` ASC" 

ответ

1

Вместо

... AND dutyroster.date = DATE(NOW()) AND DATE(NOW())+ INTERVAL 1 DAY 

попробовать

... AND (dutyroster.date = CURDATE() OR 
     dutyroster.date = CURDATE() + INTERVAL 1 DAY)) 

или более кратким образом, так как @MarcM предложил

... AND dutyroster.date IN (CURDATE(), CURDATE() + INTERVAL 1 day) 
+0

'dutyroster.date в (CURDATE(), CURDATE (+) интервал 1 день)' является немного больше concis е. now() может быть проблематичным, поскольку он включает h: m: s и может сбрасывать сравнение, если '.date' является полем datetime, а не только датой. однако новая версия должна быть «OR». но в противном случае +1. –

+0

не работает. Кажется, что здесь работает do3st «AND» –

+0

@MarcB DATE (NOW()) дает только дату, но я полностью согласен, что 'IN' с' CURDATE() 'более кратким. – peterm

0

С вашей первой попытки это почти похоже на то, что вы пытаетесь запрограммировать COBOL! Кроме того, для справок в будущем «это не работает» не является полезным комментарием. Вы должны сказать, что на самом деле происходит.

Во всяком случае, попробуйте изменить положение, где либо:

WHERE doctors.docid = $ doc_id И (dutyroster.date = CURRENT_DATE ИЛИ dutyroster.date = CURRENT_DATE + ИНТЕРВАЛ 1 ДЕНЬ)

или:

ГДЕ doctors.docid = $ doc_id И dutyroster.date IN (CURRENT_DATE, CURRENT_DATE + иНТЕРВАЛ 1 день))