我想选择日期大于上次处理日期的行。 最后处理的日期在历史表中。
Function
此返回ORA-01843:不是有效的月份错误。
我在表1中手动将行插入为TO_DATE('09 / 26/2019 14:37:49','MM / DD / YYYY HH24:MI:SS'),而在表1_hist中没有行。 但是,当我使用sql developer为table1查询表时,得到的值显示为'26 -SEP-19'。 last_updated_date是日期字段。
我想在上次执行时间之后从table1获取ID。
谢谢
答案 0 :(得分:0)
SYSDATE
是DATE值。在已经为TO_DATE()
的值上使用DATE
是没有用的。
尝试
where last_updated_date >
(select MAX(NVL(last_updated_date, SYSDATE)) from table1_hist);
答案 1 :(得分:0)
我建议使用如下分析函数:
SELECT
ID
FROM
(
SELECT
T.ID,
T.LAST_UPDATED_DATE,
MAX(TH.LAST_UPDATED_DATE) OVER() AS M_LAST_UPDATED_DATE
FROM
TABLE1 T
JOIN TABLE1_HIST TH ON ( T.ID = TH.ID )
-- i am guessing that this is the join condition or you can use your own conition here
)
WHERE
LAST_UPDATED_DATE > COALESCE(M_LAST_UPDATED_DATE, SYSDATE)
干杯!
答案 2 :(得分:0)
首先,您不需要任何to_date转换即可进行比较。
如果table1_hist至少具有一个非空值,则使用
select t.id
from table1 t
where t.last_updated_date > ( select max(th.last_updated_date) from table1_hist th )
就足够了,但是所有这些值都为空,然后使用这样的查询:
select t.id
from table1 t
where t.last_updated_date >
(select nvl(max(th.last_updated_date),t.last_updated_date-1) from table1_hist th)