image.png
参照[http://www.itjj.net/tech/DB/Oracle/anzhuangpeizhi/20080321/283050.html](http://www.itjj.net/tech/DB/Oracle/anzhuangpeizhi/20080321/283050.html)
思路就是明白unix/linux时间戳是按照从格林威治时间1970年1月1日期计算的一个秒数(我粗俗的理解)。
unix/linux 时间戳转换为标准时间格式(主要是注意时区问题):
select TO_DATE('19700101','yyyymmdd') + 1235728935/86400 +TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))/24 from dual,其中1235728935就是unix/linux时间戳,转换完之后就表示为 2009-2-27 18:02:15。
反过来也一样,还是要考虑时区
select (to_date('2009-2-27 18:02:15','yyyy-mm-dd hh24:mi:ss') - to_date('1970-1-1','yyyy-mm-dd'))*86400- TO_NUMBER(SUBSTR(TZ_OFFSET(sessiontimezone),1,3))*3600 from dual
[@more@]
网友评论