postgresql 从一段时间内获取最早的一天或者最晚的一天

方法1

select * from 表   where openid='****' order by (fwsj - to_timestamp(to_char(fwsj,'YYYY-MM-DD'),'YYYY-MM-DD')) limit 1;

取最早时间 倒序排序取最晚时间

方法2:

select * from 表   where openid='***' order by (extract(epoch FROM(fwsj - to_timestamp(to_char(fwsj,'YYYY-MM-DD'),'YYYY-MM-DD')))) ;

参考案例

select 
fwsj
,to_char(fwsj,'YYYY-MM-DD') 
,to_timestamp(to_char(fwsj,'YYYY-MM-DD'),'YYYY-MM-DD')
,fwsj - to_timestamp(to_char(fwsj,'YYYY-MM-DD'),'YYYY-MM-DD')
,extract(epoch FROM(fwsj - to_timestamp(to_char(fwsj,'YYYY-MM-DD'),'YYYY-MM-DD')))
from 表;

部分函数介绍

– 获取当前时间
select now();
select CURRENT_TIMESTAMP;
– to_char
to_char(timestamp, text) 将时间戳转为字符串
– to_timestamp
to_timestamp(text, text) 将字符串转换为时间戳
– 时间戳相减
结果我为时间戳 可以相减得到的也是时间戳格式
– extract()
该extract功能从日期/时间值中检索子字段
使用1: extract(field from timestamp)
使用2:执行减法的一种简单方法是使用将每个值转换为秒数EXTRACT(EPOCH FROM …)

发布了31 篇原创文章 · 获赞 29 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/cchulu/article/details/101687876