2013-08-02 57 views
0

我想运行一个cronjob,它检查时间戳小于当前时间+1个月的db表中。 但不知道我该怎么做。查询中两个时间戳之间的比较

我已经尝试了一些,但没有奏效。

$buy_time=strtotime($row['sdate']); 
$current_time= strtotime("now"); 
$diff=$current_time - $buy_time; 

$SQL = "UPDATE product SET status=0 WHERE sdate <'$diff'"; 
$res= mysqli_query($link,$SQL); 
+0

格式是什么$行[ 'SDATE']在 – JohnnyFaldo

+0

什么数据类型是你的'sdate'列吗? – NDM

+0

这个问题有一些答案,看起来好像他们会为你工作:http://stackoverflow.com/a/3923228/1352271 – JohnnyFaldo

回答

1

假设你使用MySQL的本地日期/日期时间字段为sdate场,那么就不要使用PHP生成日期,并将其粘贴到查询,做这一切在MySQL直接:

... WHERE sdate >= (NOW() - INTERVAL 1 MONTH) 
+0

和使用'日期(FROM_UNIXTIME(sdate))'如果' sdate'是一个unix时间戳 – NDM

0
$currentTime = time(); 
$timePlusMonth = $currentTime+30*24*60*60; //30 days * 24 hours * 60 minutes * 60 seconds 
$timePlusMonth = date("Y-m-d H:i:s", $timePlusMonth); 

$query = "UPDATE product SET status=0 WHERE sdate < '$timePlusMonth'"; 
mysqli_query($link, $query); 

你 'SDATE' 列必须在YMD H:我:s格式(2013年8月2日16时02分45秒)

+0

我想更新状态,其中'sdate-currenttime> 1个月' –

+0

如果你在3月1日运行它,这将会非常糟糕。你最终会在一月份结束,并最终拉起两个月。 –

+0

该做什么...我这样做是为了取消产品的激励 –