从1970-1-1 0:00:00开始到现在的秒数转化成时间?

fibbery 2008-06-04 10:10:02
我的原始问题是有一个格林尼治时间的时间戳1196970334,要转化成本地时间的小时数字,我的转化方法是mod((1196970334+28800)/3600,24),但是我觉得效率会不好,是否有函数直接将1196970334转化成日期类型,然后再取HH24呢?或者直接得到小时数?请大家帮助研究一下。条条大路通罗马!
...全文
826 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hmlac 2011-03-08
  • 打赏
  • 举报
回复
我正遇到这个问题,看看
shen521941 2011-03-04
  • 打赏
  • 举报
回复
我学习学习 看看
robin_ares 2008-06-04
  • 打赏
  • 举报
回复
恩,这种转换需要依赖于数据库内部的数据记录。可以先插入一条1000年的,再插一条3000年的,不知道可不可以
fibbery 2008-06-04
  • 打赏
  • 举报
回复
对,我感觉这个东西与update或者insert是有关系的,系统改变了才会有scn。
好像解决不了我的问题。
hebo2005 2008-06-04
  • 打赏
  • 举报
回复
我研究下来,觉得结果应该是这样,实际时间戳的转换是基于oracle里内部的一个对时间戳的纪录集
也就是说如果你的数据库里有个时间戳的纪录,就能转换,没有就转换不了
hebo2005 2008-06-04
  • 打赏
  • 举报
回复
此类转换需要依赖于数据库内部的数据记录,对于持久的SCN则不能转换,示例如下:


SQL> select min(FIRST_CHANGE#) scn,max(FIRST_CHANGE#) scn from v$archived_log;

SCN SCN
------------------ ------------------
8907349093953 8908393582271

SQL> select scn_to_timestamp(8907349093953) scn from dual;
select scn_to_timestamp(8907349093953) scn from dual
*
ERROR at line 1:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1
ORA-06512: at line 1


SQL> select scn_to_timestamp(8908393582271) scn from dual;

SCN
--------------------------------------------------------
05-JAN-07 11.45.50.000000000 AM


网上搜索来的,我正在研究
fibbery 2008-06-04
  • 打赏
  • 举报
回复
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select to_char(scn_to_timestamp('4335118084'),'hh24') from dual;
select to_char(scn_to_timestamp('4335118084'),'hh24') from dual
*
第 1 行出现错误:
ORA-08181: 指定的编号不是有效的系统更改号
ORA-06512: 在 "SYS.SCN_TO_TIMESTAMP", line 1
ORA-06512: 在 line 1
hebo2005 2008-06-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Robin_Ares 的回复:]
select to_char(scn_to_timestamp('4335118084'),'hh24') from dual;
可以取得系统时。10g有效

timestamp_to_scn(sysdate)就是系统时间戳了
[/Quote]
这个我也学习下
robin_ares 2008-06-04
  • 打赏
  • 举报
回复
select to_char(scn_to_timestamp('4335118084'),'hh24') from dual;
可以取得系统时。10g有效

timestamp_to_scn(sysdate)就是系统时间戳了
robin_ares 2008-06-04
  • 打赏
  • 举报
回复
scn_to_timestamp应该可以把

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧