postgresql 使用 orafce 中的sysdate() 时区不一致问题的解决

postgresql 下的now()返回的时间是服务器时间,这个时间是对的。但是装了orafce后的sysdate()就不对,差了一个“服务器时区”,为了这个把服务器时区也改成0时区不合适,于是改改函数吧。。。

set search_path="$user", oracle, madlib, public;

反正那个原来也是个函数。从需要使用的用户下面新建这个函数。。。。加上时区。。。。 。。

这个解决办法也不是特别的理想,但是基本上可以解决这个问题了

DROP FUNCTION sysdate()

CREATE OR REPLACE FUNCTION public.sysdate( )
    RETURNS timestamp with    time zone
    LANGUAGE 'sql'

    COST 100
    IMMUTABLE STRICT
AS $BODY$ SELECT oracle.sysdate() at time zone '0'; $BODY$;


	

 或者从参数里调整orafce的时区为 -8 (orafce 3.15 可以)

更加优雅的解决方案:

如果要进行持久更改,请在 postgresql.conf 中写入 orafce.timezone = 'Asia/Shanghai' 并重新启动postgresql

选择 oracle.dbtimezone() 必须显示 'Asia/Shanghai' 或 ALTER DATABASE xxx SET orafce.timezone = Asia/Shanghai';并重新启动postgresql
不需要重新安装orafce。只是您需要正确且持久地设置 orafce.timezone() 的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值