Вот рабочий пример одного из способов решения проблемы.Я использовал MySQL, так как вы изначально не указали базу данных.Большинство SQL имеют схожие функции для работы с датами и временем, но для некоторых может потребоваться небольшая доработка.
Для создания тестовой базы данных:
CREATE SCHEMA IF NOT EXISTS `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE `test`;
DROP TABLE if exists `samples`;
CREATE TABLE if not exists `samples` (
`id` int not null auto_increment,
`measure` float null,
`tstamp` timestamp,
primary key (`id`)
)
ENGINE = MyISAM;
INSERT `samples` (measure, tstamp) VALUES
(4.79, '2019-06-04 05:59:24'),
(6.80, '2019-06-04 05:59:46'),
(6.13, '2019-06-04 06:00:19'),
(8.18, '2019-06-04 06:01:22'),
(6.78, '2019-06-04 06:01:15'),
(3.79, '2019-06-03 08:00:00'),
(6.18, '2019-06-03 07:00:00'),
(4.78, '2019-06-03 06:00:00'),
(4.80, '2019-06-03 05:00:00'),
(4.13, '2019-06-03 04:00:00');
Проверка:
mysql> select * from samples;
+----+---------+---------------------+
| id | measure | tstamp |
+----+---------+---------------------+
| 1 | 4.79 | 2019-06-04 05:59:24 |
| 2 | 6.8 | 2019-06-04 05:59:46 |
| 3 | 6.13 | 2019-06-04 06:00:19 |
| 4 | 8.18 | 2019-06-04 06:01:22 |
| 5 | 6.78 | 2019-06-04 06:01:15 |
| 6 | 3.79 | 2019-06-03 08:00:00 |
| 7 | 6.18 | 2019-06-03 07:00:00 |
| 8 | 4.78 | 2019-06-03 06:00:00 |
| 9 | 4.8 | 2019-06-03 05:00:00 |
| 10 | 4.13 | 2019-06-03 04:00:00 |
+----+---------+---------------------+
10 rows in set (0.00 sec)
Вот запрос для перечисления данных для выборки, ближайшей к 06:00 3 июня:
USE test;
SELECT measure,
tstamp,
abs(time_to_sec (time(tstamp)) - time_to_sec('6:00:00')) AS delta
FROM samples
WHERE tstamp BETWEEN '2019-06-03' AND '2019-06-04'
ORDER BY delta
LIMIT 1;
Тот же запрос, кроме выбора 4 июня:
SELECT measure,
tstamp,
abs(time_to_sec (time(tstamp)) - time_to_sec('6:00:00')) AS delta
FROM samples
WHERE tstamp BETWEEN '2019-06-04' AND '2019-06-05'
ORDER BY delta
LIMIT 1;
Результаты:
Database changed
+---------+---------------------+-------+
| measure | tstamp | delta |
+---------+---------------------+-------+
| 4.78 | 2019-06-03 06:00:00 | 0 |
+---------+---------------------+-------+
1 row in set (0.00 sec)
+---------+---------------------+-------+
| measure | tstamp | delta |
+---------+---------------------+-------+
| 6.8 | 2019-06-04 05:59:46 | 14 |
+---------+---------------------+-------+
1 row in set (0.00 sec)