简体   繁体   English

将 oracle 查询转换为 postgresql

[英]Convert oracle query to postgresql

I need to convert oracle query to postgresql我需要将 oracle 查询转换为 postgresql

(select PK_, 
        'Statement of Holdings' as NOTIFICATIONNAME_ , 
        CASE NOTIFICATIONSSTATUS_ 
             WHEN 'Processed'              THEN 'Succeeded' 
             WHEN 'Processed With Failure' THEN 'Failed' 
             WHEN 'Impacted'               THEN 'Succeeded'  
             WHEN 'Impact Failed'          THEN 'Failed' 
             WHEN 'Archived'               THEN 'Succeeded' 
             WHEN 'Prepared'               THEN 'Running' 
                                           ELSE 'Planned' 
        END as STATUS , 
        DIRECTION_, 
        UPDATEDATE_ as updatedate_, 
        (to_date('19700101', 'YYYY-MM-DD HH24:MI:SS' ) + (( 1 / 24 / 60 / 60 / 1000) * UPDATEDATE_)) as MODIFICATIONDATE  
from atementOfHoldingsNotification_ 
where (DIRECTION_ is not null) and (updatedate_ > 1609462800000) ) 

union all 

(select PK_, 
        'Statement of Transactions' as NOTIFICATIONNAME_ , 
        CASE NOTIFICATIONSSTATUS_  
             WHEN 'Processed'              THEN 'Succeeded' 
             WHEN 'Processed With Failure' THEN 'Failed' 
             WHEN 'Impacted'               THEN 'Succeeded'  
             WHEN 'Impact Failed'          THEN 'Failed' 
             WHEN 'Archived'               THEN 'Succeeded' 
             WHEN 'Prepared'               THEN 'Running' 
                                           ELSE 'Planned' 
        END as STATUS , 
        DIRECTION_, 
        UPDATEDATE_ as updatedate_, 
        (to_date('19700101', 'YYYY-MM-DD HH24:MI:SS' ) + (( 1 / 24 / 60 / 60 / 1000) * UPDATEDATE_)) as MODIFICATIONDATE  
from entOfTransactionsNofitication_ 
where (DIRECTION_ is not null) and (updatedate_ > 1609462800000)) 

union all 

(select PK_, 
        'Statement of Pending Transactions' as NOTIFICATIONNAME_ , 
        CASE NOTIFICATIONSSTATUS_ 
             WHEN 'Processed'              THEN 'Succeeded' 
             WHEN 'Processed With Failure' THEN 'Failed' 
             WHEN 'Impacted'               THEN 'Succeeded'  
             WHEN 'Impact Failed'          THEN 'Failed' 
             WHEN 'Archived'               THEN 'Succeeded' 
             WHEN 'Prepared'               THEN 'Running'
                                           ELSE 'Planned' 
        END as STATUS , 
        DIRECTION_, 
        UPDATEDATE_ as updatedate_, 

I got this issue when i executed:我在执行时遇到了这个问题:

ERROR: operator does not exist: date + numeric LINE 4: ..._, (to_date('19700101', 'YYYY-MM-DD HH24:MI:SS' ) + (( 1 / 2... ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. SQL state: 42883 Character: 586错误:运算符不存在:日期 + 数字第 4 行:..._, (to_date('19700101', 'YYYY-MM-DD HH24:MI:SS' ) + (( 1 / 2... ^ 提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。SQL state:42883 字符:586

Instead of:代替:

to_date('19700101', 'YYYY-MM-DD HH24:MI:SS' ) + (( 1 / 24 / 60 / 60 / 1000) * UPDATEDATE_

You can use TIMESTAMP and INTERVAL literals:您可以使用TIMESTAMPINTERVAL文字:

TIMESTAMP '1970-01-01 00:00:00.000 UTC' + UPDATEDATE_ * INTERVAL '0.001' SECOND

Which works in both Oracle fiddle and PostgreSQL fiddle .这适用于 Oracle fiddle和 PostgreSQL fiddle

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM