Postgresql: 时间戳long,TimeStamp,Date,String互转

27 篇文章 1 订阅
22 篇文章 0 订阅

今天遇到一个神奇的问题: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

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛一枚~

您的鼓励是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值