我想与来自不同表格的时间戳进行比较。我希望获得tbl_1中的图章大于tbl_2中MAX(图章)的所有行。
select *
from tbl_1
where timestamp > (select MAX(TIMESTAMP) from tbl_2);
不幸的是,这不起作用。我总是得到零结果:/。列的数据类型是日期/时间
好的,我发现了问题。
问题是如果tbl_2为空并且没有日期,则它不会返回任何内容。当我输入较小的日期时它会起作用。
答案 0 :(得分:1)
我发现做手动比较有帮助。运行查询
select MAX(TIMESTAMP) from tbl_2
并查看其中的日期是否大于您在tbl_1
中的任何日期select MAX(TIMESTAMP) from tbl_1
如果是这样,那就解释了为什么你没有得到结果,你将不得不查看那些大的时间戳来确定记录是否需要更改。
要使其工作以返回所有行,即使在tbl_2中为MAX(TIMESTAMP)查询返回NULL
select *
from tbl_1
where timestamp > (select MAX(TIMESTAMP) from tbl_2) or (select MAX(TIMESTAMP) from tbl_2) is null;
答案 1 :(得分:1)
回答作者的回答......
您可以使用NVL
来考虑子查询返回NULL的可能性(当tbl_2
为空时):
select *
from tbl_1
where timestamp > NVL((select MAX(TIMESTAMP) from tbl_2), timestamp - 1);