Oracle迁移到PPAS(PostgreSQL)时的日期计算问题-阿里云开发者社区

开发者社区> 阿里云数据库> 正文

Oracle迁移到PPAS(PostgreSQL)时的日期计算问题

简介: Oracle中两个日期相减会得到NUMBER类型返回,而在PPAS中同样操作返回的是INTERVAL,通过构建一个函数可以解决此问题。

术语

  • ApsaraDB for RDS(PPAS),以下简称PPAS

PPAS与Oracle的日期计算结果对比

PPAS:

ppas=# SELECT TO_DATE('20140319 121212','yyyymmdd hh24miss') - TO_DATE('20140522 232323','yyyymmdd hh24miss') FROM dual;
      ?column?      
--------------------
 -64 days -11:11:11
(1 row)

Oracle:

SQL> SELECT TO_DATE('20140319 121212','yyyymmdd hh24miss') - TO_DATE('20140522 232323','yyyymmdd hh24miss') FROM dual;

TO_DATE('20140319121212','YYYYMMDDHH24MISS')-TO_DATE('20140522232323','YYYYMMDDH
--------------------------------------------------------------------------------
                                    -64.4661

解决方案

ppas=# CREATE OR REPLACE FUNCTION interval2number (
    p1    INTERVAL
) RETURN NUMBER
IS
BEGIN
    RETURN EXTRACT(EPOCH FROM p1 / 60 / 24) /60 ;
END;

ppas=# SELECT interval2number(TO_DATE('20140319 121212','yyyymmdd hh24miss') - TO_DATE('20140522 232323','yyyymmdd hh24miss')) FROM dual;
interval2number
--------------------------------------------------------------------------------
                                    -64.4660995333333

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云数据库
使用钉钉扫一扫加入圈子
+ 订阅

帮用户承担一切数据库风险,给您何止是安心!

官方博客
链接