postgresql 时间相关操作
疑似蜜糖 · · Field Notes
今天遇到一个问题,就是其他业务系统过来的时间戳类型为毫秒级如:1635830753393通过postgresql 的to_timestamp函数后,发现时间错误了,得到的时间成为了 53807-06-01 07:29:52.999936经过排查发现时间戳位数问题,于是使用一下方式得到正确的时间
select to_timestamp(1635830753393/1000.0) //保留毫秒精度结果:2021-11-02 05:25:53.393000
select to_timestamp(1635830753393/1000) //不保留毫秒精度结果:2021-11-02 05:25:53.000000
其他内容
-- 当天:
select date_trunc(‘day’,now());
-- 当季第一天
select date_trunc(‘quarter’,now());
-- 当周第一天:
select date_trunc(‘week’,now());
-- 小时 取整:
select date_trunc(‘hour’,now());
-- 获取月初月末日期:
select date_trunc(‘month’,now()+‘1 months’)+‘-1 days’
select date_trunc(‘month’,now() )+‘-1 days’
select date_trunc(‘month’,now() )
-- 当前时间
clock_timestamp()
--与事务无关
now()
--在同一个事务里是一样的
-- 时间差
select date_part(‘day’, now()-date’2021-07-29’) --(结果是整天)
select date_part(‘week’, now()) --(当天是多少周)
select EXTRACT(epoch from (now()-date’2021-07-29’))/60/60/24 --(结果是小数)