user3026519
user3026519

Reputation: 543

How to get all the records whose updated date is less than 30 days in php

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

Upvotes: 0

Views: 1215

Answers (3)

Abhik Chakraborty
Abhik Chakraborty

Reputation: 44874

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

Upvotes: 1

Andris
Andris

Reputation: 6113

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();

Upvotes: 1

TwHello Inc
TwHello Inc

Reputation: 601

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

Upvotes: 1

Related Questions