我有一个用户表,用户需要获得批准,我想展示未经批准并且在7天前注册的用户。
我的user_regdate是使用php time()函数创建的时间戳。
这是我尝试的,它不起作用:
mysql_query("select * from users WHERE user_regdate < now() - interval 7 day AND approved='0' order by id;");
由于
答案 0 :(得分:14)
PHP的timstamps是一个简单的整数,而MySQL的now()
返回一个日期时间值。这很可能会解决问题:
SELECT ... WHERE user_regdate < unix_timestamp(now() - interval 7 day)) ...
基本上,没有unix_timstamp()调用,你就是在比较苹果和橘子。
答案 1 :(得分:3)
原始解决方案充其量,但我不是MySQL时间计算的最佳解决方案
$timestamp = strtotime("-7 days");
mysql_query("SELECT * FROM users WHERE user_regdate < $timestamp AND approved = 0 ORDER BY id");
答案 2 :(得分:1)
php的time()函数输出一个unix时间戳(自1970年1月1日以来的秒数)。 MySQL的now()函数输出一个格式化的日期(如2011-6-9 12:45:34)...所以我认为你不能像那样比较它们。
尝试在查询中使用unix时间戳,减去7天,而不是now():
$7_days_ago = time() - (7 * 24 * 60 * 60);
mysql_query("select * from users WHERE user_regdate <" . $7_days_ago . " AND approved='0' order by id;");
答案 3 :(得分:0)
试试这个;
select *
from users
WHERE DATE_SUB(user_regdate,INTERVAL 7 DAY)
AND approved='0'
order by id;