Reputation: 5369
I have a mySQL table containing matchs and their dates (in a DateTime column).
Is it possible to get all matches from day X to X+n, and then all matches from day X+n to day X+2n...?
I would use that to "limit" my results: If I'm on page 1, I get all matches from day 1 to day 5 (for example), on page 2, I get all matches from day 6 to day 10 etc.
I guess I can't use the LIMIT
clause because it only limits rows I get (based on a number of rows I want and not on a number of days)
Upvotes: 1
Views: 10456
Reputation: 701
You should use the BETWEEN
function in MySQL:
$start = 0;
$end = 5;
SELECT *
FROM table
WHERE day
BETWEEN DATE(NOW() + INTERVAL $start DAY)
AND DATE(NOW() + INTERVAL $end DAY)
Adjust the $start and $end variables as you wish using the page number.
Upvotes: 1
Reputation: 5817
you can do it with the DATE_ADD
function
SELECT *
FROM table
WHERE date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 30 DAY)
http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_date-add
Edit:
If you want to use it for pagination you can do it with the following:
$page = 0; //receive it i.e with $_GET, but be aware of sql injection
$intervalInDays = 30;
//create db connection...
$sql = "
SELECT *
FROM table
WHERE date
BETWEEN DATE_ADD(DATE('your startdate'), INTERVAL (".$page * $interval.") DAY)
AND DATE_ADD(DATE('your startdate'), INTERVAL (".($page+1) * $interval.") DAY)";
//query and fetch...
Upvotes: 3