常见于日期、数值的查询,例如查询离某个给定日期最接近的数据。
创建测试表
create table test_around
(
id int auto_increment primary key,
data_time datetime null,
data_name varchar(50) null
);
填充一些测试数据。
INSERT INTO test_around(data_time, data_name) VALUES
('2023-05-10 08:00:00','1'),
('2023-05-10 20:00:00','2'),
('2023-05-11 08:00:00','3'),
('2023-05-11 20:00:00','4'),
('2023-05-12 08:00:00','5'),
('2023-05-12 20:00:00','6'),
('2023-05-13 08:00:00','7'),
('2023-05-13 20:00:00','8');
测试查询
SELECT * FROM test_around
ORDER BY ABS(STR_TO_DATE('2023-05-11 13:00:00', '%Y-%m-%d %H:%i:%S') - data_time)
LIMIT 1;
id | data_time | data_name |
---|---|---|
9 | 2023-05-11 08:00:00 | 3 |
1 row in set, 16 warnings (0.01 sec)