[提前为我的英语道歉]
我的数据库表event_start_date(用户输入日期时间)中有一列,我的要求是获取当前日期时间前x天的数据。结果记录中event_start_date的值应大于或等于NOW()(当前日期时间)
`event_start_date >= NOW()` (using php or mysql)
这是我到目前为止所做的事情(zend in magento):
$sql = $read->select() ->from(array('e' => 'my_table'));
$where = "e.event_start_date = DATE(DATE_ADD(e.event_start_date, INTERVAL x DAY))";
$sql->where($where);
echo $sql->__toString();exit;
//导致
SELECT
E.* FROM 'my_table' AS 'e' WHERE (e.event_start_date = DATE(DATE_ADD(e.event_start_date, INTERVAL x DAY)))
我使用的另一个是
如果x = 1,
SELECT
E.* FROM 'my_table' AS 'e' WHERE DATEDIFF(e.event_start_date,DATE(DATE_ADD(e.event_start_date, INTERVAL {$x} DAY)));
都输出一行。什么是解决方案?我有点卡住了。
非常感谢你的帮助。
感谢,
答案 0 :(得分:1)
应该是这样的:
SELECT * FROM table WHERE event_start_date BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY)
您的陈述:
DATEDIFF(e.event_start_date,DATE(DATE_ADD(e.event_start_date, INTERVAL {$x} DAY)));
实际上意味着:“start_date + 3天高于start_date” 并没有多大意义