oracle如何查询一周,oracle查询星期几

如何查询oracle数据库一周的数据

参考 oracle11g行变列两种办法的比较:

创新互联的团队成员不追求数量、追求质量。我们经验丰富并且专业,我们之间合作时就好像一个人,协同一致毫无保留。创新互联珍视想法,同时也看重过程转化带来的冲击力和影响力,在我们眼中,任何细节都不容小觑。一直致力于为企业提供从主机域名、网站策划、网站设计、商城开发、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。

方法1:优点是分析函数,缺点:返回log,低效,

select link_pid, replace(strs,',','|') all_forms

from

(select t.link_pid,

wmsys.wm_concat(t.form_of_way)

over(partition by t.link_pid order by t.form_of_way ) strs,

row_number() over(partition by t.link_pid order by t.form_of_way) RN,

count(1) over(partition by t.link_pid ) CNT

from rd_link_form t

) where RN=CNT

方法2:优点是高效,返回char,缺点:不是分析函数

select t.link_pid,

listagg(t.form_of_way, '|')

within group (order by t.form_of_way ) all_forms

from rd_link_form t

group by t.link_pid

listagg()需在11.2版本下才行

两种方法的比较:依link_pid去重后有23万的数据量,方法1的wmsys.wm_concat用3小时看不到结果,方法2的listagg用80秒看到结果

【我以字典表user_tab_columns改写了上述SQL,如下,大家直接执行就行:】

方法1:

select table_name, replace(strs, ',', '|') all_forms

from (select t.table_name,

wmsys.wm_concat(t.COLUMN_NAME) over(partition by t.table_name order by t.COLUMN_NAME) strs,

row_number() over(partition by t.table_name order by t.COLUMN_NAME) RN,

count(1) over(partition by t.table_name) CNT

from user_tab_columns t)

where RN = CNT

方法2:

select t.table_name,

listagg(t.COLUMN_NAME, '|')

within group (order by t.COLUMN_NAME ) all_forms

from user_tab_columns t

group by t.table_name

大家可以直接在自己的pl/sql中运行上述SQL

ORACLE数据库查询一周以内的数据怎么写

截取本周第一天:

SQL select sysdate,trunc(sysdate,'d') from dual;

SYSDATE TRUNC(SYSDATE,'D')

------------------- -------------------

2009-03-24 21:29:32 2009-03-22 00:00:00

Oracle计算周数的几种方式

比如星期一到星期天算一周 查2011年7月完整周数 select max(count1) - 1 from (SELECT count(1) count1 FROM DUAL WHERE TO_CHAR(ADD_MONTHS(LAST_DAY(to_date('201107', 'yyyyMM')), -1) + LEVEL, 'DAY') = '星期一' CONNECT BY LEVEL

你知道oracle怎么查 本周,本月,和上月的数据吗

当月数据

select * from table t

where t.create_time

=TRUNC(SYSDATE, 'MM')

and

t.create_time=last_day(SYSDATE) create_time为你要查询的时间

当年数据

select * from table t

where t.create_time

=trunc(sysdate,'YYYY')

and

t.create_time=add_months(trunc(sysdate,'YYYY'),12)-1

本周(国外周日为一个星期第一天)

where t.create_time =trunc(sysdate,'day')+1 and

t.create_time=trunc(sysdate,'day')+6 本周(国内周一为一个星期第一天)

where t.create_time =trunc(next_day(sysdate-8,1)+1) and

t.create_time=trunc(next_day(sysdate-8,1)+7)+1

oracle怎么查询上周的数据(例如今天是周日,我要查询出上个周一到周日的数据)

--1、取某天在本周中的第几天(默认周日开始算第1天)

select to_char(to_date('2011-04-11','yyyy-mm-dd'), 'd') from dual;

--2、如果要从周一开始算第1天,需要做一些手脚

--大概思路是:1变成7,2变成1,3变成2......,7变成6

select decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),

1,

7,

to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1)

from dual;

--3、再根据上面的结论倒推到上周时间

select to_date('2011-04-04', 'yyyy-mm-dd') -

decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),

1,

7,

to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1,

to_date('2011-04-04', 'yyyy-mm-dd') -

decode(to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd'),

1,

7,

to_char(to_date('2011-04-04', 'yyyy-mm-dd'), 'd') - 1) - 7 + 1 + 6

from dual;


文章标题:oracle如何查询一周,oracle查询星期几
URL链接:http://scjbc.cn/article/hsjdei.html

其他资讯