開發中碰見這樣一個問題,須要將歷史數據刷新成時間戳形式,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個小時】java
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區。linux