Skip to content

Instantly share code, notes, and snippets.

@azinkey
Created July 31, 2019 06:45
Show Gist options
  • Save azinkey/00bab540a20409b8fc70ceb93df072ad to your computer and use it in GitHub Desktop.
Save azinkey/00bab540a20409b8fc70ceb93df072ad to your computer and use it in GitHub Desktop.
MySQL date range filters example
switch ($date_range) {
case 'yesterday':
$sql .= " AND date_modified BETWEEN SUBDATE(CURDATE(), INTERVAL 1 DAY) AND NOW()";
break;
case 'this_week':
$sql .= " AND YEARWEEK(date_modified, 1) = YEARWEEK(CURDATE(), 1)";
break;
case 'last_week':
$sql .= " AND YEARWEEK(date_modified) = YEARWEEK(NOW() - INTERVAL 1 WEEK)";
break;
case 'last_7_days':
$sql .= " AND date_modified BETWEEN SUBDATE(CURDATE(), INTERVAL 7 DAY) AND NOW()";
break;
case 'last_month':
$sql .= " AND date_modified BETWEEN MONTH( DATE_SUB(CURDATE(),INTERVAL 1 MONTH )) AND NOW()";
break;
case 'last_30_days':
$sql .= " AND date_modified BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW()";
break;
case 'custom':
if(!empty($date_from) || !empty($date_to)){
$sql .= " AND date(date_modified) >= '". $date_from ."' AND date(date_modified) <= '". $date_to."'";
}
break;
default:
case 'today':
$sql .= " AND date_modified BETWEEN SUBDATE(CURDATE(), INTERVAL 0 DAY) AND NOW()";
break;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment