[英]How to get all the records whose updated date is less than 30 days in php
我想從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 '");
我喜歡這樣做: AND UpdateDate > NOW() - INTERVAL 30 DAY AND UpdateDate < NOW()
。
如果您的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();
你可以在mysql中做到這一點
`Updatedate` < DATE(NOW() - INTERVAL 30 DAY)
要么
`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)") ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.