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函数用于计算符合条件的最小的记录。

问题来源:https://stackoverflow.com/questions/78389189/records-closest-to-the-time