我正在设置一个Cron,我想在与当天匹配的记录上执行各种功能
我的users
表格:
Username registration_date expiration_date
behz4d 2012-01-19 21:55:44 2013-01-23 11:15:24
test 2012-05-24 17:42:13 2013-04-12 17:23:19
...
现在我希望得到expiration_date
为TODAY
的用户
我只是可以查询表格,在数组中获取expiration_date
,并将该日期与今天日期进行比较,例如:
$current_date = date("Y-m-d");
$query = mysql_query("SELECT username FROM users");
while($row = mysql_fetch_array($query)){
$users_array[] = $row['username'] . "->" . substr($row['expiration_date'], 0, 10);// since I don't care about the exact time, I need to get the users who their expiration DAY is today
}
foreach($users_array $username as $expiration_date){
if($expiration_date == $current_date)
$my_target_users[] = $username;
}
但这似乎有点奇怪,我的意思是应该有另一种方式......
无论如何我可以说expiration_date = TODAY
?
任何人都可以帮我这个吗? 提前致谢
更新
如果用户的截止日期是从今天起3天,那该怎么办?我想向他们发送电子邮件,让他们知道他们的帐户将在3天后过期... 我应该这样做:
... WHERE expiration_date >= CURRENT_DATE AND expiration_date < CURRENT_DATE + INTERVAL 3 DAYS
!?
答案 0 :(得分:7)
SELECT username FROM users WHERE DATE(expiration_date) = CURRENT_DATE
但是,这需要(低效率)全表扫描。如果您在expiration_date
上有索引,则应使用:
SELECT username
FROM users
WHERE expiration_date >= CURRENT_DATE
AND expiration_date < CURRENT_DATE + INTERVAL 1 DAY