Oracle时间戳与日期时间转换

Oracle时间戳与日期时间转换

Unix 时间戳 转换为 日期时间

新建函数:

CREATE OR REPLACE FUNCTION TIMESTAMP_TO_DATE

(IN_TIMESTAMP IN NUMBER )输出参数 number 类型 时间戳

RETURN DATE AS

OUT_DATE DATE;输出参数 date 类型 日期

BEGIN

Unix 时间戳 转换为 Date 格式, 197011 + 输入时间戳/60/60/24 + 时区/24

OUT_DATE := to_date(‘1970-01-01 00:00:00′,‘yyyy-mm-dd hh24:mi:ss’)+IN_TIMESTAMP/60/60/24+to_number(substr(tz_offset(sessiontimezone),1,3)/24);

RETURN OUT_DATE;

END TIMESTAMP_TO_DATE;

查询结果

select to_char(TIMESTAMP_TO_DATE(1555343531),‘yyyy-mm-dd hh24:mi:ss’) from dual;

 Oracle1.png

DATE 类型 转换为 Unix 时间戳

新建函数

CREATE OR REPLACE FUNCTION DATE_TO_TIMESTAMP

(IN_DATE IN DATE ) 输入参数 DATE 类型 日期时间

RETURN INT AS

UNIX_TIMESTAMP INT; 输出参数 INT 类型 时间戳

BEGIN

Data 类型 日期时间 转换为 INT 类型 时间戳, (输入时间-197011)*60*60*24 – 时区*60*60

UNIX_TIMESTAMP := (IN_DATE-to_date(‘1970-01-01 00:00:00′,‘yyyy-mm-dd hh24:mi:ss’))*60*60*24 - to_number(substr(tz_offset(sessiontimezone),1,3)*60*60);

RETURN UNIX_TIMESTAMP;

END DATE_TO_TIMESTAMP;

查询结果

select DATE_TO_TIMESTAMP(sysdate) from dual;

Oracle时间戳与日期时间转换

转载请注明来源:幽幽过客_{Oracle时间戳与日期时间转换}