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

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

问题描述:

I want to get all the records from mysql database who have updated their records within 30 days from the current date for that i have used the below query but it is not working properly. $tda is the current date and $prevmonth is the date of exactly 30 days back from the current date. Please help. Thanks.

$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 '");

我想从mysql数据库获取所有记录,这些记录在当前日期的30天内更新了他们的记录 我使用了以下查询,但它无法正常工作。 $ tda是当前日期,$ prevmonth是从当前日期开始 30天的日期。 请帮忙。 谢谢。 p>

  $ da = date('d'); 
 $ tda = date('dm-Y'); 
 $ prevmonth = date(''。  $ da .'- m-Y',strtotime(' -  1 months')); 
 $ sql_q = executeQuery(“select * from”.reg。“where'uid'!=”。$ _ SESSION ['uid'  ]。“AND Updatedate&gt; ='$ prevmonth'AND Updatedate&lt; ='$ tda'”); 
  code>  pre> 
  div>

You can do it in mysql as

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

OR

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

For Varchar

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

UPDATE :

The query posted in the comment is wrong and should be

$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)") ;

If you are looking for data within last 30 days then

$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)") ;

I like doing something like this: AND UpdateDate > NOW() - INTERVAL 30 DAY AND UpdateDate < NOW().

If your Updatedate column is a DATETIME column then you can do the following:

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

Or:

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

Or if it's a timestamp then this:

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