从MySQL表中选择PHP时间戳早于X的行

时间:2011-06-09 20:32:33

标签: php mysql timestamp

我有一个用户表,用户需要获得批准,我想展示未经批准并且在7天前注册的用户。

我的user_regdate是使用php time()函数创建的时间戳。

这是我尝试的,它不起作用:

mysql_query("select * from users WHERE user_regdate < now() - interval 7 day AND approved='0' order by id;");

由于

4 个答案:

答案 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;