oracle - 在 oracle 中比较日期
问题描述
我想比较 oracle 中两个不同表中的两个日期。
如果两个日期相等,那么我应该打印日期相等。如果日期不相等,那么我想将值插入到其他表中。
假设有两个表,即 AAA 和 BBB
表 AAA:-
In_Date |
---|
2021-09-08 15:30:00 |
表 BBB:-
In_Date |
---|
2021-09-08 16:00:00 |
表 BBB 中的日期可以是日期,也可以为空。
下面是我写的查询,
SET SERVEROUTPUT ON;
DECLARE
aaa_date date;
bbb_date date;
emp_join date;
BEGIN
select in_date into aaa_date from aaa;
select in_date into bbb_date from bbb;
if (aaa_date = bbb_date) then
DBMS_OUTPUT.PUT_LINE('EQUALS');
else
insert into emp_table values (aaa_date, bbb_date);
end if;
END;
上面的查询不是比较日期,以及如果 aaa 表中有日期但 bbb 表中有空值,如何比较。
解决方案
基本上,您不需要 PL/SQL 进行这样的比较;如果两个表只包含一行,你可以
SQL> with
2 aaa (in_date) as
3 (select to_date('2021-09-08 15:30:00', 'yyyy-mm-dd hh24:mi:ss') from dual),
4 bbb (in_date) as
5 (select to_date('2021-09-08 16:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual)
6 --
7 select case when a.in_date = nvl(b.in_date, sysdate) then 'equal'
8 else 'different'
9 end result
10 from aaa a cross join bbb b;
RESULT
---------
different
SQL>
注意第 7 行和NVL
函数,以防bbb
表中不包含in_date
列中的值。
推荐阅读
- devops - 使用 VStest 并行运行测试不起作用
- php - PHP - 将变量的内容替换为名称
- mqtt - Thingsboard 断开 MQTT 客户端
- perl - 格式化哈希内容以生成报告
- angular - undefined[] 缺少类型中的以下属性
- python - 在 Pandas df 上运行 lower_case.translate 和 string.punctuation 的 AttributeError
- google-cloud-platform - 如何解决 terraform 中的“错误 409:这些数据存储实体的争用过多”?
- javascript - 如何在循环中使用 React setState?
- excel - 运行时错误“1004” - 工作表类的选择方法失败
- asp.net-core - Pod 启动时 WCF 超时 .NET Core