【问题标题】:Stop showing events after the end_date在 end_date 之后停止显示事件
【发布时间】:2014-10-13 23:58:53
【问题描述】:

我的 php 页面上有以下代码来显示今天开始的 mysql 数据库中的事件:

SELECT *
FROM events
WHERE DATE_FORMAT(sort_date, '%Y-%m-%d') >= Date_Format(Now(), '%Y-%m-%d')
  AND authorize = 1
ORDER BY sort_date ASC

它只显示从今天开始的日历事件,而不是昨天或上周,并且此代码运行良好。

某些活动的持续时间超过 24 小时,因此我们希望活动在 end_date“之后”不显示

所以本质上,它只显示从现在开始的事件,并在 end_date 之后停止显示。

任何有关更改代码以将事件保留到结束日期的帮助将不胜感激。

谢谢

【问题讨论】:

  • 持续时间如何表示?
  • 带有一个名为:end_date 的字段。开始日期字段被称为:日期

标签: php mysql datetime


【解决方案1】:

假设您的events 行中有一个sort_date 和一个end_date,这就是您需要的。

SELECT whatever
  FROM events
 WHERE sort_date >= CURDATE()
   AND end_date  < CURDATE() + INTERVAL 1 DAY
    etc etc etc

表达式 &lt; CURDATE() + INTERVAL 1 DAY 选择 end_date 直到(但不包括)明天第一刻之前的所有项目。

请注意,您不需要在问题中显示的 DATE_FORMAT() 的所有内容;您可以直接在日期上进行比较。

【讨论】:

  • 我会试一试。我想判断它是否有效的唯一方法是这一天到来。 :-) 谢谢!
  • 嗯,有一些假的测试记录?
  • 该网站已上线...但我想我可以在其中添加一些内容。我确实扔了一些东西,明天如果它还在,我会告诉你的。再次感谢!
  • 嗨 Ollie,我昨天添加了一个测试活动,该活动昨天开始,今天结束。我以为该事件今天仍会显示,但事实并非如此。有什么想法吗?这是实际代码: SELECT * FROM events WHERE sort_date >= CURDATE() AND end_date
猜你喜欢
  • 1970-01-01
  • 2012-10-15
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2014-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多