如何在php中获取更新日期少于30天的所有记录

时间:2014-04-10 09:41:18

标签: php mysql sql

我想从mysql数据库中获取所有记录,这些记录已经在当前日期的30天内更新了他们的记录,因为我使用了以下查询,但它无法正常工作。 $ tda是当前日期,$ prevmonth是完全日期 从当前日期算起30天。请帮忙。感谢。

$da=date('d');
$tda=date('d-m-Y');
$prevmonth = date(''.$da.'-m-Y', strtotime('-1 months'));
$sql_q=executeQuery("select * from ".reg." where 'uid' !=".$_SESSION['uid']." AND Updatedate >= '$prevmonth' AND  Updatedate <='$tda '");

3 个答案:

答案 0 :(得分:1)

我喜欢这样做:AND UpdateDate > NOW() - INTERVAL 30 DAY AND UpdateDate < NOW()

答案 1 :(得分:1)

如果您的Updatedate列是DATETIME列,则可以执行以下操作:

SELECT *
FROM table
WHERE uid <> ?
AND Updatedate >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
AND Updatedate <= NOW();

或者:

SELECT *
FROM table
WHERE uid <> ?
AND Updatedate BETWEEN DATE_SUB(NOW(), INTERVAL 1 MONTH) AND NOW();

或者如果它是时间戳,那么:

SELECT *
FROM table
WHERE uid <> ?
AND FROM_UNIXTIME(Updatedate) >= DATE_SUB(NOW(), INTERVAL 1 MONTH)
AND FROM_UNIXTIME(Updatedate) <= NOW();

答案 2 :(得分:0)

您可以在mysql中执行

`Updatedate` <  DATE(NOW() - INTERVAL 30 DAY)

OR

`Updatedate` <  DATE_SUB(CURDATE(), INTERVAL 30 DAY)

对于Varchar

 STR_TO_DATE(Updatedate, '%Y-%m-%d') <  DATE_SUB(CURDATE(), INTERVAL 30 DAY)

更新:

评论中发布的查询错误,应该是

$sql_q=executeQuery("select * from registration
where 
`uid` != ".$_SESSION['uid']." 
AND STR_TO_DATE(Update_date, '%d-%m-%Y') < DATE_SUB(CURDATE(), INTERVAL 30 DAY)") ;

如果您在过去30天内查找数据,那么

$sql_q=executeQuery("select * from registration
where 
`uid` != ".$_SESSION['uid']." 
AND STR_TO_DATE(Update_date, '%d-%m-%Y') >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)") ;