今天遇到一个神奇的问题:Postgre数据库里存的 10位long类型的时间戳,拿Java代码转完的日期年月日时分秒,转出来的时间和在pgAdmin里用sql转完的日期 整整差了8个小时。。。。。

你不信吗? 请看图
时间戳:1598619305 转时间:年月日时分秒

select 1598619305,to_timestamp(1598619305),to_char(to_timestamp(1598619305),‘YYYY-MM-DD HH24:MI:SS’);

PgAdmin窗口:
在这里插入图片描述
Java窗口:

在这里插入图片描述

1. 时间戳Long转Timestamp

select TO_TIMESTAMP(1512490630) as time from tablename;

2. TimeStamp转时间戳Long,转出来可能差8小时,需要减去8小时

转10位
SELECT EXTRACT(epoch FROM NOW())-83600;
SELECT EXTRACT(epoch FROM CAST(‘2017-12-06 00:17:10’ AS TIMESTAMP))-8
3600;

转13位 转13位向下取整
SELECT EXTRACT(epoch FROM NOW())1000–836001000,floor(EXTRACT(epoch FROM NOW())1000-836001000);

4. String转Date 只能得到年月日,得不到时分秒,怪哉,在这篇博文里找到了答案,设计如此…

select to_date(‘2020-08-28 12:55:05’)

5. TimeStamp 10位,13位 转String

select to_char(to_timestamp(1512490630), ‘YYYY-MM-DD HH24:MI:SS’);
SELECT to_char(to_timestamp(t.create_time / 1000), ‘YYYY-MM-DD HH24:MI:SS’);


10位转String
SELECT to_char(to_timestamp(t.create_time / 1000), ‘YYYY-MM-DD HH24:MI:SS’)

6. String转Timestamp

select ‘2023-03-02 00:00:00.000’::Timestamp

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐