SQL,查询每天最接近指定时间的记录

Oracle 数据库的某表有一列是日期时间类型,每天对应多条数据:

|---------------------|---|
| t | d |
| 1.1.2024 08:08:08 | 1 |
| 1.1.2024 10:10:10 | 2 |
| 1.1.2024 15:15:15 | 3 |
| 1.1.2024 20:20:20 | 4 |
| 2.1.2024 09:09:09 | 5 |
| 2.1.2024 12:12:12 | 6 |
| 2.1.2024 16:16:16 | 7 |
| 12.12.2024 16:16:16 | 8 |

现在要从每天找出两条记录,一条离当天的早 8 点最近,一条离当天的晚 20 点最近。

|---------------------|---|
| t | d |
| 1.1.2024 08:08:08 | 1 |
| 1.1.2024 20:20:20 | 4 |
| 2.1.2024 09:09:09 | 5 |
| 2.1.2024 16:16:16 | 7 |
| 12.12.2024 16:16:16 | 8 |
| 12.12.2024 16:16:16 | 8 |

编写SPL代码

|---------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------|
| |  A |
| 1 | =orcl.query("select * from tb") |
| 2 | =A1.group(day(t)) |
| 3 | =A2.conj([~.minp(abs(interval@s(time("08:00:00"),time(t)))),~.minp(abs(interval@s(time("20:00:00"),time(t))))]) |

A1:通过JDBC查询数据库。

A2:按日期分组,但不汇总,以便后续处理每组数据。

A3:对每组数据,计算组内每条记录与当天8点的间隔秒数,取绝对值,求绝对值最小的那条记录;同理算出来与20点间隔秒数的绝对值最小的记录;最后合并各组的处理结果。minp函数用于计算符合条件的最小的记录。

SPL已开源免费,欢迎前往乾学院社区了解更多!

SPL源码地址

免费下载试用

相关推荐
瀚高PG实验室7 分钟前
通过数据库日志获取数据库中的慢SQL
数据库·sql·瀚高数据库
Hgfdsaqwr16 分钟前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
invicinble24 分钟前
对于Mysql深入理解
数据库·mysql
阳光九叶草LXGZXJ1 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
Hgfdsaqwr1 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
s1hiyu1 小时前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python
2301_763472461 小时前
使用Seaborn绘制统计图形:更美更简单
jvm·数据库·python
熊文豪2 小时前
金仓数据库如何以“多模融合“重塑文档数据库新范式
数据库·金仓数据库·电科金仓·mongodb迁移
霖霖总总2 小时前
[小技巧56]深入理解 MySQL 聚簇索引与非聚簇索引:原理、差异与实践
数据库·mysql
Dreamboat-L2 小时前
Redis及其两种持久化技术详解
数据库·redis·缓存