日期问题,成员资格已过期,但并非如此

时间:2010-08-07 18:19:16

标签: mysql zend-framework datetime date

我需要修改我的有效通知脚本(在成员到期前通知成员,到期日等),以特定的方式工作。

所以我在数据库(MySQL)中的expires列是datetime类型,所以它的值如下所示:2010-08-08 13:46:38

这是一件事:

可以随时从后端调用脚本,并且它希望用户输入一个例如1的数字,这意味着应该通知明天(任何时间)到期的所有成员。因此,如果脚本被调用于:2010-07-08 00:00:05所有成员的到期日期是2010-08-08 00:00:00到2010-08-08 23:59:59应该通知。或者换句话说,所有成员的到期日期都包含2010-08-08。

我正在使用ZendFramework,但我认为我也将处理MySQL代码。 我也相信你明白这个帖子我的意思,以及我想要完成的事情......

我的代码不能正常工作(对于这种方法)看起来像这样:

$d = new Zend_Db_Expr("DATE_ADD(NOW(), INTERVAL $days DAY)");

$days2 = $days-1;
$d2 = new Zend_Db_Expr("DATE_ADD(NOW(), INTERVAL $days2 DAY)");
return $this->fetchAll("status='1' AND expires <= $d AND expires >=$d2");

1 个答案:

答案 0 :(得分:0)

要获得明天时间窗口的开始和结束,如何使用CURRENT_DATE() or CURDATE(),例如,

DATE_ADD(CURRENT_DATE(), INTERVAL $days DAY )
DATE_ADD(CURRENT_DATE(), INTERVAL $days2 DAY )

那会给你

+-------------------------------------------+-------------------------------------------+
| DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY ) | DATE_ADD(CURRENT_DATE(), INTERVAL 2 DAY ) |
+-------------------------------------------+-------------------------------------------+
| 2010-08-08                                | 2010-08-09                                | 
+-------------------------------------------+-------------------------------------------+

你需要稍微调整你的不平等:

------- use less-than instead of less-than-or-equal.
expires < $d AND expires >=$d2