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区。

posted @   小海葵  阅读(29156)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示