PostgreSQL时间戳

-- 计算当前时间,以下两种方法计算结果一样
SELECT CURRENT_TIMESTAMP, now();
SELECT CURRENT_TIMESTAMP AS d1, now() AS d2;

-- 计算当前时间戳
SELECT floor(extract(epoch from now())*1000) AS last_modified_time;  -- 经过在线验证的准确写法
SELECT floor(extract(epoch from now()))*1000 AS last_modified_time;  -- 先取整后乘以1000会丢失精度,太粗糙
SELECT extract(epoch from now()) AS last_modified_time;  -- 小数点后有5位小数
SELECT extract(epoch from now())*1000 AS last_modified_time;  -- 小数点后有两位小数
SELECT floor(extract(epoch from now())*1000) AS last_modified_time;  -- 向下取整,无小数
SELECT extract(epoch from now())*1000 AS t1, floor(extract(epoch from now())*1000) AS t2;  -- t1有小数,t2无小数


-- 对比在线时间戳转换发现前面这种是准的,后面的这种比当前时间戳大,是错误的计算方法,因为epoch表示距离1970的秒数。
SELECT floor(extract(epoch from now())*1000) AS t1, floor(extract(epoch from ((current_timestamp - timestamp '1970-01-01 00:00:00')*1000))) AS t2;


select (70-20) AS 时间差:测试;
select (1658424309070-1658395509070) AS 时间差:毫秒;
select (1658424309070-1658395509070)/1000/3600 AS 时间差:小时;

-- 10位时间戳的单位是秒,13位时间戳的单位是毫秒

-- 相差8小时
SELECT to_char(to_timestamp(1658424309070/1000), 'yyyy-mm-dd hh24:mi:ss:us') d1, to_char(to_timestamp(1658395509070/1000), 'yyyy-mm-dd hh24:mi:ss:us') d2;

-- 时间戳转换日期格式
SELECT to_char(to_timestamp(1551835379224/1000), 'yyyy-mm-dd hh24:mi:ss:us');

http://tool.aliy7.com

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值