【数据库】数据库查询-PGSQL

1.select extract(year from now()); 提取现在这个时间的年丰 month,day,hour

 

2.select timestamp '2011-06-03'; 返回时间戳

 

3.select age(current_date,current_date-1)<='25 hours'; 查询A和B的时间差距,小于多少

 

4.to_timestamp(substring(to_char(month, 'yyyy-MM-dd hh24 : MI : ss' )FROM 1 FOR 7),'yyyy-MM-dd') ;返回时间戳

 

 5.   sum(case log.grade when '2' then 1 else 0 end) as "2", ;Case When 语句

 

sum(case when 1>3 then true else false end)

 

 

6. DATE_ADD(#{month, jdbcType=TIMESTAMP},INTERVAL 1 MONTH ) 日期加一个月

 

7.数字保留4位小数

//select 8/(100-3) as c1,

       round(8/(100-3) ,4) as c2,

     round(8/(100-3)::numeric ,4) as c3,

       //8/(100-3)::numeric as c4;

 

7.select * from A a join left  B b on a.c=b.d 左连 只保留A,除非a.c可对应b.d的两条。

select * from A a join right;

 

8.数据库jsonb使用

建表语句如下:

create table if not exists name_age (

info jsonb

)

插入数据可以直接以json格式插入:

insert into name_age values('{"id":1,"name":"小明", "age":18}')

在json里插入新的key值gender,如下:

SELECT info||'{"gender":"男"}'::jsonb from name_age where (info->>'id')::int4 = 1

select replace(last_day(((top + (i||' month')::interval))::date),'-','')::int into r;

 

9.select date_trunc('month',to_date('20150305','yyyymmdd'));

select date(zz) from

generate_series(date_trunc('month',to_date('20150305','yyyymmdd')),

date_trunc('month',to_date('20150705','yyyymmdd')),'1 month') as tt(zz);

 

查询数据   https://www.postgresql.org/docs/9.6/functions-json.html

Postgres里的查询需要用到查询符。比如说,我们要查询id为1的数据,语句如下:

select info from name_age where info @> '{"id":1}'::jsonb

用到了 @> 这个查询符,表明info当前这条记录里的顶层json中有没有id为1的key-value对;有的话则满足条件。

再来一个复杂一点的查询的,查询 age>16 的记录,并且只显示 name ,语句如下:

select info->'name' from name_age where (info->>'age')::int4 > 16

你可能感兴趣的:(JAVA编程)