from_unixtime函数

这个mysql函数 

FROM_UNIXTIME(sm.member_login_time/1000) as 登陆时间

有人知道怎么用oracle 的代码来写吗,因为oracle不支持from_unixtime函数

Scyalcire 发布于 2020-12-23 14:45
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
flyingsnakeLv6资深互助
发布于2020-12-23 14:50

https://www.cnblogs.com/neru/archive/2011/08/29/2157411.html


oracle中日期类型与unix 时间戳的转换


Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。

Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数

(1)从Unix时间戳记转换为Oracle时间

create or replace function unix_to_oracle(in_number NUMBER) return date is

begin 

  return(TO_DATE('19700101','yyyymmdd') + in_number/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24);

end unix_to_oracle;

(2)由Oracle时间Date型转换为Unix时间戳记

create or replace function oracle_to_unix(in_date IN DATE) return number is 

begin 

  return( (in_date -TO_DATE('19700101','yyyymmdd'))*86400 - TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600);

end oracle_to_unix;

 


  • Scyalcire Scyalcire(提问者) 他这个是自己写了个函数 我需要直接可以放在select后面的写法
    2020-12-23 14:51 
  • flyingsnake flyingsnake 回复 Scyalcire(提问者) SELECT (SYSDATE - TO_DATE(\'1970-1-1 8\', \'YYYY-MM-DD HH24\')) * 86400 FROM DUAL; --毫秒级时间戳 SELECT (SYSDATE - TO_DATE(\'1970-1-1 8\', \'YYYY-MM-DD HH24\')) * 86400000 + TO_NUMBER(TO_CHAR(SYSTIMESTAMP(3), \'FF\')) AS MILLIONS FROM DUAL;
    2020-12-23 14:54 
最佳回答
0
shirokoLv6资深互助
发布于2020-12-23 14:51

to_char(date,'yyyy-mm-dd hh24:mi:ss')

最佳回答
0
AmyQLv6初级互助
发布于2020-12-23 14:51

trunc(sysdate)+0/24

  • 4关注人数
  • 659浏览人数
  • 最后回答于:2020-12-23 14:51
    请选择关闭问题的原因
    确定 取消
    返回顶部