使用事件前一周的日期时间检索 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()
比 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;
我认为您应该使用 DATE_ADD 将一周添加到现在,并选择您的活动日期小于或等于这个新生成的日期 + 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
你试过BETWEEN了吗?试一试。
WHERE DATE(startdate) BETWEEN date_sub(date(NOW()), INTERVAL -1 WEEK) AND CONCAT(YEAR(curdate()),'-12-31')
我的网站上有一个展览页面,我想在开始前一周列出所有即将举行的活动,并在活动结束后一直显示到当年年底。 我们曾经全年都展示它们,但我的雇主现在只想在活动开始前一周展示它们,并让活动在新的一年开始之前一直列出。
我有以下代码可用于从事件发生前一周提取记录。但是,我正在努力解决的问题是保留今年剩余时间显示的每条记录。
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()
比 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;
我认为您应该使用 DATE_ADD 将一周添加到现在,并选择您的活动日期小于或等于这个新生成的日期 + 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
你试过BETWEEN了吗?试一试。
WHERE DATE(startdate) BETWEEN date_sub(date(NOW()), INTERVAL -1 WEEK) AND CONCAT(YEAR(curdate()),'-12-31')