Oracle 获取特定时间段之间的记录
我正在尝试在时间范围内挑选所有可用的记录 我需要从表2中获取时间戳,并获取表1中的所有记录在该时间和当前时间之间可用Oracle 获取特定时间段之间的记录,oracle,Oracle,我正在尝试在时间范围内挑选所有可用的记录 我需要从表2中获取时间戳,并获取表1中的所有记录在该时间和当前时间之间可用 SELECT COUNT(*) FROM TABLE1 WHERE STATUS = 'COMPLETED' AND LAST_UPDATE_USER = 'myID' AND LAST_UPDATE_DT BETWEEN TO_DATE(( SELECT /*+PARALLEL(16)*/ SIG
SELECT COUNT(*)
FROM TABLE1
WHERE STATUS = 'COMPLETED'
AND LAST_UPDATE_USER = 'myID'
AND LAST_UPDATE_DT BETWEEN
TO_DATE((
SELECT /*+PARALLEL(16)*/ SIGN_IN_DT
FROM TABLE2
WHERE ID = 'myID'
AND SIGNED_SCREEN = 'screen1'
AND SIGN_OFF_DT IS NULL),
'dd-mon-yyyy hh24:mi:ss.ff')
AND SYSDATE;
两个表中的日期格式=05-MAR-19 07.47.26.769934000 PM
我得到一个例外:
ORA-01821:无法识别日期格式
请提供帮助。尝试以下查询:
select * from table1 t1
join table2 t2 on t1.last_update_user = t2.ID
where t1.status = 'COMPLETED'
and t1.last_update_user = 'myID'
and t2.signed_screen = 'screen1'
and t2.sign_off_dt is null
and t1.last_update_dt between t2.sign_in_dt and sysdate;
这两列的数据类型是什么?时间戳数据类型。为什么对已经是
日期
(或时间戳
)的值执行到日期(…)
?只需将跳过到\u DATE(…
不要尝试将日期(或时间戳)数据类型中已经存在的内容转换为日期(或时间戳)。您有两个时间戳列,因此只需按原样进行比较!您的子查询必须只返回1行。在这种情况下,/*+PARALLEL(16)*/
似乎毫无用处。