Форумы / National / Russian / Тех. поддержка / Подскажите про фильтры по датам

Kopusha
#45453 22.09.2021 09:30

Привет, скорее не про кота а в общем, можем ткнете носом в какой мануал толковый.

Фильтрую запрос по дате, что то наподобии:

switch ($period) {
		case 'day':
			$from = $sys['now'] - 86400;
			$to = $sys['now'];
			break;
		case 'yesterday':
			$from = $sys['now'] - 86400;
			$to = $sys['now'] - 172800;
			break;
		case 'week':
			$from = $sys['now'] - 604800;
			$to = $sys['now'];
			break;
		case 'month':
			$from = $sys['now'] - 2592000;
			$to = $sys['now'];
			break;
		case 'year'://за текущий год
			$from = $sys['now'] - 31536000;
			$to = $sys['now'];
			break;
		case 'all'://за все время
			$from = 0;
			$to = $sys['now'];
			break;
		case 'custom'://выбор дат    
$setfrom = cot_import_date('cust_from', true, false, 'G');
			$setto = cot_import_date('cust_to', true, false, 'G');
	        if (!empty($setfrom) && !empty($setto))
	        {
				$from = $setfrom;
				$to = $setto;
	        }
	        else
	        {
	            cot_error(cot::$L['querydatewrong'].cot::$R['code_error_separator'], '');
				$from = 0;
				$to = $sys['now'];
	        }
	
	        if ($setfrom <= $setto)
	        {
	        }
	        else
	        {
	            cot_error(cot::$L['querydatewrong'].cot::$R['code_error_separator'], '');
				$from = 0;
				$to = $sys['now'];
	        }
	        break;
		default:
		//Весь час
			$from = 0;
			$to = $sys['now'];
			break;
	}
	if(!empty($period))
	{
		$where['period'] = "date BETWEEN {$from} AND {$to}";
	}	
	else
	{
		$where['period'] = "date BETWEEN {$from} AND {$to}";
	}

Оно естественно дает математический фильтр, для которого "год" это с 22 сент 2021 по 22 сент 2220.

case 'custom'://выбор дат   

дает +- выбрать нужный период.
Но надо сделать "за сегодня" = с 0 ночи реально сегодня (по времени системному сервера и настроек сайта - они совпадают) до 23.59 ночи этого дня

Или "за месяц" = с 1 сентября  до 22 сентября.
Может у кого то есть готовый код?
Заранее спасибо!