我想从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 '");
答案 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)") ;