Postgresql之时间戳long,TimeStamp,Date,String互转方式(post meridiem)干货分享

随心笔谈2年前发布 admin
196 0 0

文章摘要

这篇文章记录了一位开发者在PostgreSQL数据库中处理时间戳时遇到的问题。具体来说,他们遇到了将PostgreSQL的10位长整型时间戳(timestamp)转换为Java日期格式时出现的时间偏移问题(相差8小时)。文章详细解释了这一问题的成因,并提供了具体的Java代码示例,展示了如何通过调整时间戳的值来解决偏移问题。此外,文章还讨论了10位和13位时间戳的处理方法,以及如何将时间戳转换为日期字符串。通过这篇文章,读者可以更好地理解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;

转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’);

10位转String

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:postgreSQL 使用timestamp转成date格式postgresql中时间转换和加减操作PostgreSQL TIMESTAMP类型 时间戳操作

© 版权声明

相关文章