文章摘要
这篇文章描述了在PostgreSQL数据库中遇到的时间戳转换问题。用户在Java代码中将10位long类型的时间戳转换为日期和时间时,发现与在pgAdmin中通过SQL语句转换的结果相差8小时。文章详细解释了这一问题的原因,并提供了解决方案,包括减去8小时来调整时间差异。 总结:1. 时间戳长10位转String时,与直接转换的时间存在差异。2. 通过`EXTRACT(epoch FROM NOW()) - 83600`或`EXTRACT(epoch FROM NOW()) 1000 - 83600 1000`可以调整时间差异。3. 时间戳长10位转字符串时无法得到时分秒。4. 关键词包括:时间戳、转字符串、转日期、PostgreSQL、Java转换、差异调整。
目录时间戳long,TimeStamp,Date,String互转1.时间戳Long转Timestamp2.TimeStamp转时间戳Long4.String转Date 只能得到年月日5.TimeStamp 10位,13位 转String总结
今天遇到一个神奇的问题:
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窗口:

select TO_TIMESTAMP(1512490630) as time from tablename;
转出来可能差8小时,需要减去8小时
转10位
SELECT EXTRACT(epoch FROM NOW())-83600;
SELECT EXTRACT(epoch FROM CAST(‘2017-12-06 00:17:10′ AS TIMESTAMP))-83600;
SELECT EXTRACT(epoch FROM CAST(‘2017-12-06 00:17:10′ AS TIMESTAMP))-83600;
转13位 转13位向下取整
SELECT EXTRACT(epoch FROM NOW())1000–836001000,floor(EXTRACT(epoch FROM NOW())1000-836001000);
得不到时分秒,怪哉,在这篇文章里找到了答案,设计如此…
select to_date(‘2020-08-28 12:55:05′)
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’);
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’)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:postgreSQL 使用timestamp转成date格式postgresql中时间转换和加减操作PostgreSQL TIMESTAMP类型 时间戳操作
© 版权声明
文章版权归作者所有,未经允许请勿转载。



