我有一个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'格式 但是此查询未显示预期结果。 请帮忙。什么应该是优化和最佳方法。
答案 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)