繁体   English   中英

在Postgresql中使用的所有Polyfills / Shim for Oracle函数

[英]Any Polyfills / Shim for Oracle functions to be used in postgresql

有一个没有源的Java jar文件/外部库...它通过jdbc连接到数据库引擎,并且它执行的少数SQL查询是...TRUNC(date_column,'Q')......TRUNC(date_column,'DD')......TRUNC(date_column,'MM')...但是postgresql db Trunc()方法仅处理数字数据,而截断日期的确切函数是date_trunc() 。 。

Trunc()date_trunc()的参数顺序也会更改

那么是否有一个postgresql自定义函数可以重载现有的trunc()函数并处理所有格式化程序“ DD”,“ MM”,“ Q”等等( 其他格式化程序参考 )...?

我可以尝试从头开始编写新功能...但是似乎要重新发明轮子...我可以使用的任何可重用的polyfill sql包/文件?

到目前为止,我已经提出了:

CREATE OR REPLACE FUNCTION trunc(dtval timestamp with time zone, formatter text) returns timestamp with time zone AS $body$
BEGIN
RETURN date_trunc((CASE
    WHEN formatter IN ('MI') THEN 'minute'
    WHEN formatter IN ('HH','HH12','HH24') THEN 'hour'
    WHEN formatter IN ('DAY','DY','D') THEN 'day'
    WHEN formatter IN ('DDD','DD','J') THEN 'day'
    WHEN formatter IN ('W') THEN 'week'
    WHEN formatter IN ('IW') THEN 'week'
    WHEN formatter IN ('WW') THEN 'week'
    WHEN formatter IN ('MONTH','MON','MM','RM') THEN 'month'
    WHEN formatter IN ('Q') THEN 'quarter'
    WHEN formatter IN ('IYYY','IY','IY','I') THEN 'year'
    WHEN formatter IN ('SYYYY','YYYY','YEAR','SYEAR','YYY','YY','Y') THEN 'year'
    WHEN formatter IN ('CC','SCC') THEN 'year'
ELSE 'day'
END),dtval);
END;
$body$
LANGUAGE PLPGSQL
SECURITY DEFINER
STABLE;

我在正确的道路上吗?

您是否看过github.com/orafce/orafce?

暂无
暂无

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

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