暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL Oracle 兼容性 之 NUMTODSINTERVAL

digoal 2017-09-26
540

作者

digoal

日期

2017-09-26

标签

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)
```

PostgreSQL 许愿链接

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

9.9元购买3个月阿里云RDS PostgreSQL实例

PostgreSQL 解决方案集合

德哥 / digoal's github - 公益是一辈子的事.

digoal's wechat

文章转载自digoal,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论