SQL: Query the records closest to the specified time each day #eg86

Judy - Dec 6 '24 - - Dev Community

A table in Oracle database has a column of datetime type, corresponding to multiple pieces of data per day:

Image description

Now we need to find two records every day, one closest to 8am that day and one closest to 8pm that day.

Image description

SPL code:

Image description

=A2.conj([~.minp(abs(interval@s(time("08:00:00"),time(t)))),~.minp(abs(interval@s(time("20:00:00"),time(t))))])
Enter fullscreen mode Exit fullscreen mode

A1: Query the database through JDBC.

A2: Group by date, but do not aggregate for subsequent processing of each group of data.

A3: For each group of data, calculate the number of seconds between each record in the group and 8 am on the same day, take the absolute
value, and find the record with the smallest absolute value; Calculate
the record with the smallest absolute value of the number of seconds
between 8 pm using the same method; Finally, merge the processed

results of each group. The minp function is used to calculate the minimum record that meets the criteria.

Open source SPL source address

Free Download

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .