Sql ORACLE中当前时间大于或等于from time和当前时间小于或等于time的条件
由于使用TO_CHAR(),条件不起作用,但如何提取时间?以下是我的疑问:Sql ORACLE中当前时间大于或等于from time和当前时间小于或等于time的条件,sql,oracle,oracle11g,date-arithmetic,Sql,Oracle,Oracle11g,Date Arithmetic,由于使用TO_CHAR(),条件不起作用,但如何提取时间?以下是我的疑问: SELECT * FROM SUPPLY_TIMING WHERE TO_CHAR (SYSDATE, 'HH:Mi') >= TO_CHAR (FROM_TIME, 'HH:Mi') AND TO_CHAR (SYSDATE, 'HH:Mi') <= TO_CHAR (TO_TIME, 'HH:Mi') 选择* 从供给到时间 WHERE TO_CHAR(SYSDATE,'HH:Mi')
SELECT *
FROM SUPPLY_TIMING
WHERE TO_CHAR (SYSDATE, 'HH:Mi') >= TO_CHAR (FROM_TIME, 'HH:Mi')
AND TO_CHAR (SYSDATE, 'HH:Mi') <= TO_CHAR (TO_TIME, 'HH:Mi')
选择*
从供给到时间
WHERE TO_CHAR(SYSDATE,'HH:Mi')>=TO_CHAR(FROM_TIME,'HH:Mi'))
对于_CHAR(SYSDATE,'HH:Mi')来说,您似乎只对时间感兴趣,而对日期部分不感兴趣。假设FROM_TIME
和TO_TIME
的数据类型为DATE
或TIMESTAMP
,则可以执行以下操作:
select *
FROM SUPPLY_TIMING
WHERE EXTRACT(HOUR FROM SYSDATE) + EXTRACT(MINUTE FROM SYSDATE)/60
BETWEEN EXTRACT(HOUR FROM FROM_TIME) + EXTRACT(MINUTE FROM FROM_TIME)/60
AND EXTRACT(HOUR FROM TO_TIME) + EXTRACT(MINUTE FROM TO_TIME)/60
乍一看,我猜是您的格式掩码导致了问题。HH
组件将以12小时格式为您提供小时数,因此1pm将返回为01
,我认为如果您使用HH24
,您将得到13
,使字符串比较按预期工作:
SELECT *
FROM SUPPLY_TIMING
WHERE TO_CHAR (SYSDATE, 'HH24:Mi') >= TO_CHAR (FROM_TIME, 'HH24:Mi')
AND TO_CHAR (SYSDATE, 'HH24:Mi') <= TO_CHAR (TO_TIME, 'HH24:Mi')
选择*
从供给到时间
WHERE TO_CHAR(SYSDATE,'HH24:Mi')>=TO_CHAR(FROM_TIME,'HH24:Mi'))
和TO_CHAR(SYSDATE,'HH24:Mi')