oracle 時間轉換為時間戳


開發中遇見這樣一個問題,需要將歷史數據刷新成時間戳形式,java中在轉換成時間格式,具體做法如下:
第一步刷新數據,生成時間格式

select (to_date('2019-07-03 10:43:57','yyyy-mm-dd hh24:mi:ss') - to_date('1970-01-01 08:00:00','yyyy-mm-dd hh24:mi:ss'))*86400000   from dual;

第二步java轉換 【注:如果不加8小時,java轉換差8個小時】

public class Main{
    public static void main(String[] args){
        Long timeStamp =1562121837000L;  //獲取當前時間戳
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String sd = sdf.format(new Date(timeStamp));      // 時間戳轉換成時間
        System.out.println("格式化結果:" + sd);
   }
}

時間戳轉換為時間

select to_char(時間戳的那一列 / (1000 * 60 * 60 * 24) +  
      to_date('1970-01-01 08:00:00', 'YYYY-MM-DD HH:MI:SS'), 'YYYY-MM-DD HH:MI:SS') AS cdate
FROM 表名 ;

時間轉換為時間戳為什么要減去1970-01-01和增加8小時呢,以下是在搜索中找到的答案(個人認為是對的)
Unix/linux時間戳記是從'1970-01-01 00:00:00'GMT開始的秒數,表現為整數型。
用當前的時間減去1970年1月1日8時,得到的天數乘以24小時乘以3600秒,得到的結果就是系統時間戳。這里用8時的原因時系統所處時區為東8區。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM