zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

PostgreSQL Oracle兼容性之 - TZ_OFFSET

Oraclepostgresql 兼容性 offset
2023-09-14 09:00:26 时间

Oracle提供的TZ_OFFSET函数,目的是将时区别名转换为以UTC为标准的OFFSET。

例如

SELECT TZ_OFFSET(US/Eastern) FROM DUAL;

TZ_OFFS

-------

-04:00

PostgreSQL tz_offset

PostgreSQL的时区信息可以从pg_timezone_names动态视图获取。

postgres=# select * from pg_timezone_names limit 10;

 name | abbrev | utc_offset | is_dst 

---------------------------+--------+------------+--------

 PST8PDT | PDT | -07:00:00 | t

 Eire | IST | 01:00:00 | t

 Antarctica/DumontDUrville | DDUT | 10:00:00 | f

 Antarctica/Syowa | SYOT | 03:00:00 | f

 Antarctica/McMurdo | NZST | 12:00:00 | f

 Antarctica/Rothera | ROTT | -03:00:00 | f

 Antarctica/Casey | AWST | 08:00:00 | f

 Antarctica/Davis | DAVT | 07:00:00 | f

 Antarctica/Macquarie | MIST | 11:00:00 | f

 Antarctica/South_Pole | NZST | 12:00:00 | f

(10 rows)

要实现与oracle tz_offset同类的功能,自定义一个函数即可。

postgres=# create or replace function tz_offset(text) returns text as $$

 select utc_offset::text from pg_timezone_names where name=$1 limit 1;

$$ language sql strict;

CREATE FUNCTION

验证对应oracle的例子

postgres=# select tz_offset(US/Eastern);

 tz_offset 

-----------

 -04:00:00

(1 row)

参考

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions202.htm

Count


【.NET 6】使用EF Core 访问Oracle+Mysql+PostgreSQL并进行简单增改操作与性能比较 唠嗑一下。都在说去O或者开源,但是对于数据库选型来说,很多人却存在着误区。例如,去O,狭义上讲,是去Oracle数据库。但是从广义上来说,是去Oracle公司产品或者具有漂亮国垄断地位和需要商业授权的数据库产品。
关于PostgreSQL数据库兼容Oracle数据库闪回查询的实现方案 注:关于在PostgreSQL上面实现Oracle数据库的闪回功能(闪回查询 闪回表 闪回删除…)的这个想法已经有很长时间了,但是鉴于本人的能力 精力和身体条件 迟迟没有完成。期间也有很多的小伙伴跟我一起研究过这个功能,但是最终都因为各种各样的问题 没有做下去。Oracle数据库闪回功能跨越版本较大,功能也比较强大 在PostgreSQL数据库上实现,需要对数据库内核有很深入的理解 两大数据库不同的底层原理也终将影响各自的实现策略,PostgreSQL标记删除就地插入的特点和基于事务快照行可见性的特性是我们可以开发PostgreSQL闪回查询的大前提。本文主要介绍 实现闪回查询的 一种实现方案