【问题标题】:MySql Query to display a record with time conditionMySql 查询以显示具有时间条件的记录
【发布时间】:2011-02-25 10:04:07
【问题描述】:

例如,我通过管理员发布新闻,并提及开始日期为 25-02-2011,结束日期为 28-02-2011。将于2011年2月25日在用户端显示。

如果我通过管理员在开始日期为 26-02-2011 和结束日期为 28-02-2011 发布新闻,那么它将在 26-02-2011 显示新闻。

如果我在 2011 年 2 月 27 日和 2011 年 2 月 28 日没有发布任何内容,它应该显示最后发布的新闻。 在这种情况下,它应该显示 2011 年 2 月 26 日发布的 27-02-2011 和 28-02-2011 的新闻。

编辑:“从新闻中选择 id、标题 WHERE startDate >= CURDATE() AND
expiryDate

如何使用 mysql 来做到这一点。

提前谢谢...

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    如果这是您谈论的网站,请提及您正在使用的服务器端技术。例如它是使用 php 吗? 因为你所要求的,仅仅使用mysql是无法完成的。

    【讨论】:

    • MySQL 有很多日期函数,例如可以返回当前日期,编写一个按日期过滤新闻的查询非常容易。
    • 问题是关于检索和显示新闻,这就是我要求语言的原因。
    【解决方案2】:
    select * from news where startdate >= now() and enddate <= now() limit 1
    

    您必须更改表和列的名称。

    【讨论】:

    • 就像我说的,你必须适应你自己的数据库结构,最终适应你的mysql版本。如果您提供更多信息,我可以为您更新。
    【解决方案3】:

    看起来您只是混淆了运算符。 Today 应该在startdate 之后,不是吗?

    SELECT id, title FROM news WHERE startDate <= CURDATE() AND
    expiryDate >= CURDATE() AND status='Active' ORDER BY id DESC
    

    【讨论】:

      【解决方案4】:

      试试这个代码:

      SELECT id, title FROM news WHERE now() between startDate AND expiryDate AND status='Active' ORDER BY id DESC

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多