Php 30天前计算
我正在从数据库中提取最近的计费日期。这是一个正常的时间戳。我想让系统检查一下时间戳是否在30天前。基本上,我们每30天给客户开一次账单。我想让它在日期正好是30天或超过30天时触发函数。这似乎不起作用。下面是我的一个时间戳的示例:Php 30天前计算,php,mysql,function,triggers,cron,Php,Mysql,Function,Triggers,Cron,我正在从数据库中提取最近的计费日期。这是一个正常的时间戳。我想让系统检查一下时间戳是否在30天前。基本上,我们每30天给客户开一次账单。我想让它在日期正好是30天或超过30天时触发函数。这似乎不起作用。下面是我的一个时间戳的示例: 1339477200 下面是cron函数: $query = "SELECT * FROM contacts"; $result = mysql_query($query); wh
1339477200
下面是cron函数:
$query = "SELECT * FROM contacts";
$result = mysql_query($query);
while($row = mysql_fetch_row($result)){
$id = $row[0];
$ownerID = $row[1];
$company = $row[4];
$lastBillDate = $row[36];
echo $lastBillDate.'<br>';
if($lastBillDate<strtotime('-30 days')){
$billdate = RelativeTime($lastBillDate);
mailBillNotice($id, $ownerID, $company, $billdate);
}
}
$query=“从联系人中选择*”;
$result=mysql\u query($query);
while($row=mysql\u fetch\u row($result)){
$id=$row[0];
$ownerID=$row[1];
$company=$row[4];
$lastBillDate=$row[36];
回显$lastBillDate。“
”;
如果($lastBillDate认为它只是一个数字,您可以在时间戳上使用普通算术:
$timestamp = 1339477200;
$thirtyDays = (60 * 60 * 24 * 30)
$thirtyDaysAgo = time() - (60 * 60 * 24 * 30)
if($timestamp - $thirtyDays <= $thirtyDaysAgo) {
// Do your thang
}
$timestamp=1339477200;
$30天=(60*60*24*30)
$thirtyDaysAgo=time()-(60*60*24*30)
如果($timestamp-$thirtyDaysIMHO,那么最好将该条件放在SQL查询中
SELECT * FROM contacts WHERE last_bill_date <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))
SELECT*FROM contacts WHERE last_bill_date在这种情况下可能无关紧要(尽管计费是一个我会小心的领域),但通常认为一天包含24小时、一小时60分钟或一分钟60秒是错误的。不要这样做!@Conrad谢谢你,这是一个很好的观点,尽管我同意在这种情况下这并不重要。@JamWaffles这似乎不起作用。.我尝试了SQL语句来扩展@alexn所说的内容,你可能应该使用 mysql_fetch_assoc()
并使用其命名键获取列。例如:$row['billDate']
如果您的MySQL列被称为billDate
。您不应该真正使用MySQL\u*
函数;它们已被弃用。请查看或。可能的重复项,但您应该真正让SQL处理此IMHO。另一个可能的重复项:这些答案都不起作用……我尝试过了,但没有显示。我知道时间戳上面显示的是过去的30天。没有显示任何内容。上面帖子(1339477200)中的时间戳是来自数据库的真实时间戳吗?在这种特殊情况下,时间戳转换为6月12日,而在撰写本文时(7月6日)不是30天前,因此该记录不会显示。
SELECT * FROM contacts WHERE last_bill_date <= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))