我需要删除日期时间字段超过 2 周的行。
这就是我想出的
$duration = Date::WEEK * 2; // int(1209600)
$query = 'DELETE FROM properties
WHERE TIMEDIFF(' . date(DATE_ISO8601) . ', reserved_datetime) > ' . $duration;
我不经常编写复杂的查询(更喜欢用 PHP 做东西,我更舒服)但我想了解更多关于它们的信息,另外在 PHP 中做这种事情效率很低,我正在处理大量的行。
有人知道我在做什么错吗?干杯。
更新
我试了一下 Wallyk 的回答,在 phpMyAdmin 中将其稍微更改为 SELECT,这样我就可以看到发生了什么。
这是我用的
SELECT *
FROM properties
WHERE date_sub( `reserved_datetime` , INTERVAL 2 week ) >0
LIMIT 0 , 30
然而,唯一的问题是它返回了reserved_datetime
is的行2010-02-28 10:45:59
,肯定是不到 2 周前(从现在开始)。
我想检查 MySQL 的内部日期。我一直date(DATE_ISO8601)
在我的查询中使用,因为 MySQLNOW()
并不完全正确(如果感兴趣,它只是返回2010-02-28 20:09:19
)。
有没有办法在该查询中指定当前日期?还有其他建议吗?
非常感谢
另一个更新
这是来自 phpMyAdmin 的屏幕截图,它可能比我的话更好地展示任何东西。哦,它只返回 3 的原因是因为所有其他人都有空白值,即0000-00-00 00:00:00