200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > pgSQL查询一段时间的操作

pgSQL查询一段时间的操作

时间:2019-02-17 11:28:18

相关推荐

pgSQL查询一段时间的操作

SELECT now()::timestamp + '1 year'; --当前时间加1年SELECT now()::timestamp + '1 month'; --当前时间加一个月SELECT now()::timestamp + '1 day'; --当前时间加一天SELECT now()::timestamp + '1 hour'; --当前时间加一个小时SELECT now()::timestamp + '1 min'; --当前时间加一分钟SELECT now()::timestamp + '1 sec'; --加一秒钟select now()::timestamp + '1 year 1 month 1 day 1 hour 1 min 1 sec'; --加1年1月1天1时1分1秒SELECT now()::timestamp + (col || ' day')::interval FROM table --把col字段转换成天 然后相加

相关函数:

例子:需求是查询lztest和hftest,假定为任务表(lztest)和工作表(zftest),一对多的关系

1、查询获取数据,要求获取创建任务超过五天时未工作的数据

获取lztest表数据入库时间(sjrksj)距离现在超过五天的数据(pgSQL)

//该sql可以获取下发任务超过5天的数据SELECTlz.* ,max(hf.hfsj)FROMlztest lzLEFT JOIN hftest hf ON hf.lz_id = lz.id WHEREnow() > ( SELECT lz.sjrksj + '5 day' AS times )GROUP BY lz.id

此时如果在select后加入·hf.xxx会报错

ERROR: column “hf.xxx” must appear in the GROUP BY clause or be used in an aggregate function

意思是hf.xxx字段必须在 GROUP BY 中出现或者被用于聚合函数,在group by后加入hf.xxx(这里不能显示工作表里面的信息)

2、现在想要把所有的任务信息展示,但要区分超过五天未工作的数据

SELECTtab.id as xxx,sw.* FROMlztest lz left join(SELECTlz.* ,max(hf.hfsj)FROMlztest lzLEFT JOIN hftest hf ON hf.lz_id = lz.id WHEREnow() > ( SELECT lz.sjrksj + '5 day' AS times )GROUP BY lz.id)tab ON tab.id = lz.id

这样就可以通过tab.id区分开,tab.id有值的是超过五天未工作的,为null的是其他情况(工作的和没有超过5天的)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。