MySql查询以显示时间条件的记录

问题描述:

例如,我通过管理员发布新闻,并提及开始日期为25-02-2011,结束日期为28-02-2011。它将在2011年2月25日在用户端显示。MySql查询以显示时间条件的记录

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

如果我没有在27-02-2011和28-02-2011上发布任何内容,它应该显示上次发布的新闻。 就是在这种情况下,它应该显示27-02-2011和28-02-2011在26-02-2011发布的新闻。

编辑: “SELECT ID,标题从新闻WHERE的startDate> = CURDATE()和
expiryDate < = CURDATE()和状态= '主动' ORDER BY ID DESC”。当前有一条消息。它甚至不提取该记录。要做什么改变。

这怎么可以用mysql来完成。

在此先感谢...

如果这是你所谈论的一个网站,请注明您所使用的服务器端技术。例如,它使用PHP? 因为你所要求的,不能仅仅通过使用mysql来完成。

+0

MySQL有很多日期函数可以返回当前日期为例,它是很容易写一个日期过滤消息的查询。 – krtek 2011-02-25 10:11:44

+0

问题是关于检索和显示新闻,这就是为什么我要求的语言。 – vimukthi 2011-02-25 10:19:18

+0

对于我刚才检索的案例来说已经足够了...... – Fero 2011-03-09 11:22:11

select * from news where startdate >= now() and enddate <= now() limit 1 

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

+0

这段代码不起作用 – Fero 2011-02-25 10:30:28

+0

就像我说的,你必须适应你自己的数据库结构,最终到你的mysql版本。如果您提供更多信息,我可以为您更新它。 – krtek 2011-02-25 10:36:04

看起来你刚刚混淆了操作符。 Today应该在startdate之后,不是吗?

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

试试这个代码:

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