如何在ORACLE中选择不在两个时间秒范围之间的记录

时间:2015-06-15 18:34:10

标签: oracle oracle11g oracle10g oracle-sqldeveloper

我有一个Oracle表,其中ORACLE时间列以下列格式存储。

上午12点 - 0

凌晨1点 - 3600

凌晨2点 - 7200 。 。

下午23点82800

即。如果时间是凌晨3点,那么它将被存储为10800 如果时间是晚上11点,那么它将被存储为82800。

现在我想选择不在晚上11点到凌晨3点之间的记录。

SELECT TIMECol
FROM MyTable
WHERE IBS_To_Time(TimeCol) NOT BETWEEN IBS_To_Time(10800) AND IBS_To_Time(82800)

IBS_To_Time会将秒转换为'HH:MM:SS'格式 但是此查询未显示预期结果。 请帮忙。什么应该是优化和最佳方法。

3 个答案:

答案 0 :(得分:1)

因此,这意味着您要选择凌晨3点到晚上11点之间的记录(不包括)

select timecol from mytable
where timecol between 10800+1 and 82800-1

答案 1 :(得分:0)

您可以将TIMECol转换为秒并在WHERE子句中以这种方式处理它:

SELECT to_number(to_char(TIMECol,'sssss')) timecol_as_seconds
  FROM MyTable

答案 2 :(得分:0)

SELECT ibs_to_time(TIMECol)
FROM MyTable
WHERE ( to_number(TIMECol)  NOT BETWEEN 0 AND  10400 ) AND  (to_number(TIMECol)  NOT BETWEEN 82800 AND  86400)