php oracle函数返回值吗,oracle与php时间转换FUNCTION

关于oracle与php时间转换函数

CREATE OR REPLACE FUNCTION date_to_unixts(oracle_date IN DATE) RETURN PLS_INTEGER IS

/**

* Converts an Oracle DATE to a UNIX timestamp

*/

unix_epoch DATE := TO_DATE('19700101080000','YYYYMMDDHH24MISS');

max_date DATE := TO_DATE('20380101000000','YYYYMMDDHH24MISS');

min_date DATE := TO_DATE('19030101000000','YYYYMMDDHH24MISS');

unix_ts PLS_INTEGER;

BEGIN

IF oracle_date > max_date THEN

RAISE_APPLICATION_ERROR( -20902,'Date too large for 32bit UNIX timestamp' );

ELSIF oracle_date < min_date THEN

RAISE_APPLICATION_ERROR( -20902,'Date too small for 32bit UNIX timestamp' );

ELSE

unix_ts := (oracle_date - unix_epoch) / (1/86400);

END IF;

RETURN (unix_ts);

END;

CREATE OR REPLACE FUNCTION unixts_to_date(unixts IN PLS_INTEGER) RETURN DATE IS

/**

* Converts a UNIX timestamp into an Oracle DATE

*/

unix_epoch DATE := TO_DATE('19700101080000','YYYYMMDDHH24MISS');

max_ts PLS_INTEGER := 2145916799; -- 2938-12-31 23:59:59

min_ts PLS_INTEGER := -2114380800; -- 1903-01-01 00:00:00

oracle_date DATE;

BEGIN

IF unixts > max_ts THEN

RAISE_APPLICATION_ERROR(

-20901,

'UNIX timestamp too large for 32 bit limit'

);

ELSIF unixts < min_ts THEN

RAISE_APPLICATION_ERROR(

-20901,

'UNIX timestamp too small for 32 bit limit' );

ELSE

oracle_date := unix_epoch + NUMTODSINTERVAL(unixts, 'SECOND');

END IF;

RETURN (oracle_date);

END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值