Ahmed Yaser
Ahmed Yaser

Reputation: 15

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
dutyroster.date = DATE(NOW()) AND DATE(NOW())+ INTERVAL 1 DAY
ORDER BY dutyroster.`date`  ASC";

this query is used to find specific doctors information from a table called dutyroster. i want to get the docs shedule information for current day and tommrow only.. but this doesnt work.

and i made a second one which is also not working since it returns current one and all the next dates also

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"

Upvotes: 0

Views: 56

Answers (2)

peterm
peterm

Reputation: 92845

Instead of

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

try

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

or in more concise way, as @MarcM suggested

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

Upvotes: 1

Captain Payalytic
Captain Payalytic

Reputation: 1071

From your first attempt it almost looks like you are trying to program COBOL! Also, for future reference "this doesn't work" is not a helpful comment. You should say what actually happens.

Anyway, try changing your where clause to either:

WHERE doctors.docid = $doc_id AND (dutyroster.date = CURRENT_DATE OR dutyroster.date = CURRENT_DATE + INTERVAL 1 DAY)

or:

WHERE doctors.docid = $doc_id AND dutyroster.date IN (CURRENT_DATE, CURRENT_DATE + INTERVAL 1 DAY))

Upvotes: 0

Related Questions