我有一个包含这些列的表:
+------------------------------------------------------+
| ad_id | ad_title | active | placed_on | duration |
+------------------------------------------------------+
| 1 | First | 1 | 2010-19-10 | 365 |
+------------------------------------------------------+
| 2 | Second | 1 | 2011-18-10 | 365 |
+------------------------------------------------------+
这是一个列表,从placed_on
那天起365天后到期,我想创建一个PHP + SQL语句,显示本月到期的列表(例如去年发布的第一个广告到期今天)。我怎样才能在这些日期做数学,比如2010-19-10 + 365
?并显示本月到期的那些。到达后我的大脑僵住了:
mysql_query("SELECT `ad_id`, `ad_title`, `active` FROM `listings` WHERE `placed_on` = ``;
是否可能,如果是,请告诉我。谢谢!
答案 0 :(得分:1)
您可以使用adddate
作为日期算术:
select ad_id, ad_title, active
from listings
where adddate(placed_on, concat(duration, ' days')) between '2011-10-01' and '2011-10-31'
据推测,您可以通过PHP提供本月的第一天和最后一天。
答案 1 :(得分:0)
如果这不是你的桌子并且你不能将puts_on变成更好的东西,你可以在前端生成你的偏移日期并将其传递给:
STRCMP()
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#function_strcmp
WHERE STRCMP(placed_on,'2010-19-10') = 1 ORDER BY placed_on
将为您提供比2010-19-10更新的一切。