问题描述
今天在写项目的时候,同事有一个需求,他需要通过SQL来查找数据库当中的同一个费率下的不同时间段的记录,且也只能通过SQL,值只有传入的时间点。
即:在用户输入一个开始和结束的时间点后,从数据库中查找出这个开始和结束的时间段中的所有记录。
以下是用户可能会传入的值:
– # 00:00:00 01:00:00
– # 14:42:41 23:59:59
– # 06:00:00 18:56:24
以下是数据库中的记录
试问,如果是你你会如何查找出这些区间的记录?欢迎在下方留下你的答案。
解决方法
SELECT
*
FROM
xhpc_rate_time
WHERE
rate_time_id >= (
SELECT
rate_time_id
FROM
xhpc_rate_time
WHERE
rate_model_id = 76
AND start_time <= '14:42:41'
AND end_time >= '14:42:41'
)
AND rate_time_id <= (
SELECT
rate_time_id
FROM
xhpc_rate_time
WHERE
rate_model_id = 76
AND start_time <= '23:59:59'
AND end_time >= '23:59:59'
)
我的思路是通过子查询来查询出开始记录的id和结束记录的id,从而来确定所需要的时段区间记录
,最后达成我们的目的。