【问题标题】:mysql query get today and tommrows datemysql查询获取今天和明天的日期
【发布时间】:2013-03-07 06:30:39
【问题描述】:
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";

此查询用于从名为 dutyroster 的表中查找特定医生信息。我只想获取当天和明天的文档信息。但这不起作用。

我制作了第二个,但它也无法正常工作,因为它返回当前日期和所有下一个日期

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"

【问题讨论】:

    标签: php mysql


    【解决方案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)
    

    【讨论】:

    • dutyroster.date IN (curdate(), curdate() + interval 1 day) 更简洁一些。 now() 可能有问题,因为它包含 h:m:s 并且如果 .date 是日期时间字段,而不仅仅是日期,则可能会导致比较失败。但是,新版本应该是OR。但否则 +1。
    • @MarcB DATE(NOW()) 只给出一个日期,但我完全同意INCURDATE() 更简洁。
    • 啊……抱歉,今天过得很糟糕。完全错过了 date() 部分。
    • dutyroster.date IN (curdate(), curdate() + 间隔 1 天)。这个工作得很好
    • @AhmedYaser 查看更新的答案。显然这两个条件之间应该是OR,或者使用相同的IN
    【解决方案2】:

    从您的第一次尝试开始,您就好像在尝试编写 COBOL! 此外,为了将来参考,“这不起作用”不是一个有用的评论。你应该说出实际发生的事情。

    无论如何,尝试将 where 子句更改为:

    其中医生.docid = $doc_id 和 (dutyroster.date = CURRENT_DATE 或 dutyroster.date = CURRENT_DATE + INTERVAL 1 DAY)

    或:

    其中医生.docid = $doc_id 和 dutyroster.date IN (CURRENT_DATE, CURRENT_DATE + INTERVAL 1 DAY))

    【讨论】:

      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2016-12-16
      • 1970-01-01
      相关资源
      最近更新 更多