Мысль такая: Надо взять из истории все записи от начала суток + одна старая запись прошлого дня. Я пока не уверен до конца, что этот вариант действительно хорош, но попробовать стоит.
Разделим задачу на два этапа.
1. Получить количество записей за текущие сутки
2. Взять это количество записей + 1
Код: Выделить всё
/* Данные истории находятся в таблице phistory. Чтобы их от туда взять, нужно знать VALUE_ID нашего Объект.Свойства
Получить его можно разными путями в зависимости от ситуации. Приведу общий способ, который будет работать в любом месте.
Например из сценария, где нет такого указателя как $this. Еще этот код немного расскажет про связь между таблицами в базе данных.
*/
// Мы знаем имя объекта и имя свойства.
// Для начала нам нужно получить их id нашего объекта и id класса которому принадлежит объект
$obj_title = 'NightMode'; //имя объекта
$arr_s = SQLSelectOne("SELECT * FROM objects WHERE TITLE='".$obj_title."'");
$obj_id = $arr_s['ID'];
$class_id = $arr_s['CLASS_ID'];
// Получим id свойства по его имени. Тут нам нужно знать еще и id класса, который только что получили.
$prop_title = 'status'; //имя свойства
$arr_s = SQLSelectOne("SELECT * FROM properties WHERE TITLE='".$prop_title."' AND CLASS_ID='".$class_id."'");
$prop_id = $arr_s['ID'];
// Теперь нам нужен id из таблицы pvalues.
$arr_s = SQLSelectOne("SELECT * FROM pvalues WHERE OBJECT_ID='".$obj_id."' AND PROPERTY_ID='".$prop_id."'");
$pvalue = $arr_s['ID'];
// Зная $pvalue можно слазать за данными истории в таблицу phistory
// Для нашей задачи нужно получить все записи по времени >= началу суток + 1 запись
$start_time=date("Y-m-d").' 00:00:00';
//$start_time='2015-02-09 00:00:00';
$tmr_start = strtotime($start_time);
// Получить количество записей за нужный период времени
$arr_s = SQLSelectOne("SELECT COUNT(ID) as COUNT_ID FROM phistory WHERE VALUE_ID=".$pvalue." AND ADDED>='".date('Y-m-d H:i:s', $tmr_start)."'");
// Взять это количество записей +1
$arr_s = SQLSelect("SELECT * FROM phistory WHERE VALUE_ID=".$pvalue." ORDER BY ADDED DESC LIMIT 0 , ".(1+$arr_s['COUNT_ID']));
echo 'obj='.$obj_id.' class='.$class_id.' prop='.$prop_id.' pvalue='.$pvalue.'<br />';
// Переберем весь массив
foreach($arr_s as $s) {
echo $s['ADDED'].' ';
echo strtotime($s['ADDED']) .' ';
echo $s['VALUE'].'<br />';
}