Oracle时间戳与日期时间转换
将Unix 时间戳 转换为 日期时间
新建函数:
CREATE OR REPLACE FUNCTION TIMESTAMP_TO_DATE
(IN_TIMESTAMP IN NUMBER )–输出参数 number 类型 时间戳
RETURN DATE AS
OUT_DATE DATE;–输出参数 date 类型 日期
BEGIN
–将 Unix 时间戳 转换为 Date 格式, 1970年1月1日 + 输入时间戳/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;
将DATE 类型 转换为 Unix 时间戳
新建函数
CREATE OR REPLACE FUNCTION DATE_TO_TIMESTAMP
(IN_DATE IN DATE ) –输入参数 DATE 类型 日期时间
RETURN INT AS
UNIX_TIMESTAMP INT; –输出参数 INT 类型 时间戳
BEGIN
–将 Data 类型 日期时间 转换为 INT 类型 时间戳, (输入时间-1970年1月1日)*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;