【发布时间】:2019-05-28 16:02:18
【问题描述】:
我有一个问题,我有一个有 3 列的表
- date - varchar2 - varchar2 -
| date | start_hour | end_hour |
我需要验证不重叠小时范围。
例如:
| date | start_hour | end_hour |
| date1 | 09:00AM | 09:30AM |
| date1 | 10:30AM | 11:30AM |
| date1 | 01:00PM | 03:00PM |
假设 3 行的日期相同。
我需要的是,这些范围不重叠
我不能插入这样的范围
start_hour = 08:00AM 和 end_hour = 09:20AM,因为 09:00AM 和 09:30AM 之间的范围已经存在,因此,新范围与表中存在的范围冲突。
我尝试了很多查询,而不是介于两者之间,我插入的 end_hour 需要小于表中的 start_hour。
有人知道怎么做吗?
【问题讨论】:
-
您的列的数据类型是什么? Oracle 没有
time数据类型。 -
忘记放了,是varchar2
-
您使用的是哪个版本的 Oracle?
-
首先,我会告诉您以 24 小时格式而不是 AM/PM 存储这些值,以便正确排序值。
-
嗨,APC,现在是 18.0
标签: sql oracle plsql date-range