在事件发生前一周使用日期时间检索 mysql 记录,然后今年所有事件都已过期


Retrieve mysql records using datetime a week before the event and then all events already expired this year

我的网站上有一个展览页面,我想列出所有活动在开始前一周举行的活动,并将它们展示到活动结束后的当年年底。我们过去全年都展示它们,但我的雇主现在只想在活动前一周展示它们,并且活动一直列出到新年开始。

我有以下代码,可用于提取事件发生前一周的记录。但是,我正在努力的部分是将今年的每条记录都显示在今年剩余时间内显示。

if ($exhstmt = $mysqli->prepare("SELECT eventname, startdate, enddate, location, location_url 
                                 FROM exhibitions 
                                 WHERE DATE(startdate) = date_sub(date(NOW()), INTERVAL -1 WEEK) 
                                 ORDER BY startdate ASC")){

我确实尝试在数据库中说明当前年份并从中提取,但它不适用于上述内容。

任何帮助将不胜感激!谢谢。

我认为您应该使用 DATE_ADD 为 NOW 添加一个星期,并选择您的活动日期小于或等于这个新生成的日期+1 周

的位置
SELECT eventname, startdate, enddate, location, location_url 
FROM exhibitions 
WHERE YEAR(startdate) = YEAR(NOW())
  AND DATE(startdate) <= DATE_ADD(DATE(NOW()), INTERVAL 1 WEEK) 
ORDER BY startdate ASC
我认为

您的查询使用 date_add() 而不是 date_sub() 会更清晰。 您还需要检查当前年份:

SELECT eventname, startdate, enddate, location, location_url
FROM exhibitions
WHERE DATE(startdate) <= date_add(CURDATE(), INTERVAL 1 WEEK) OR
      (YEAR(startdate) = YEAR(CURDATE() AND startdate <= CURDATE())
ORDER BY startdate ASC;

你试过BETWEEN吗?试一试。

其中 DATE(

开始日期) 介于 date_sub(DATE(NOW()), 间隔 -1 周) 和 CONCAT(YEAR(curdate()),'-12-31') 之间