閱讀524 返回首頁    go 阿裏雲 go 技術社區[雲棲]


PostgreSQL Oracle 兼容性 之 NUMTODSINTERVAL

標簽

PostgreSQL , Oracle , NUMTODSINTERVAL , interval , number互轉


背景

NUMTODSINTERVAL 是Oracle數字轉時間間隔類型的函數。

例子:

SELECT NUMTODSINTERVAL(100, 'day') FROM dual;  
  
SELECT NUMTODSINTERVAL(100, 'HOUR') FROM dual;  
  
SELECT NUMTODSINTERVAL(100, 'MINUTE') FROM dual;  
  
SELECT NUMTODSINTERVAL(100, 'SECOND') FROM dual;  

PostgreSQL 是不需要轉換的,可以通過字符串來輸入interval類型。

select interval '100 days';  
  
select interval '100 hours' ;  
  
select interval '100 MINUTE';  
  
select interval '100 SECOND';  

但是很多Oracle的應用軟件習慣了Oracle那套接口,怎麼降低他們的遷移或開發轉換工作量呢?

最簡單有效的方法就是在PG裏麵寫一個這樣的函數即可,如下:

create or replace function NUMTODSINTERVAL(float8, text) returns interval as $$  
  select ($1||' '||$2)::interval;  
$$ language sql strict immutable;  

例子

postgres=# select NUMTODSINTERVAL(1.1, 'second');  
 numtodsinterval   
-----------------  
 00:00:01.1  
(1 row)  

最後更新:2017-10-28 23:03:47

  上一篇:go  PostgreSQL Oracle 兼容性 之 USERENV
  下一篇:go  PostgreSQL 空間、多維 序列 生成方法