Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何显示给定日期范围的每周数据_Sql_Oracle - Fatal编程技术网

Sql 如何显示给定日期范围的每周数据

Sql 如何显示给定日期范围的每周数据,sql,oracle,Sql,Oracle,我想在oracle中以周为单位显示给定日期范围内的所有数据(计数) Select count(log.end_date) from tablename where log.end_date between '01-Jul-2013' AND '30-Jul-2013' 日期范围可以介于2013年6月1日到2013年7月30日之间 我怎么能这样显示 Count Week 23 wk1 45 wk2 67 wk3 34 wk4 78

我想在oracle中以周为单位显示给定日期范围内的所有数据(计数)

Select count(log.end_date) 
  from tablename 
 where log.end_date between '01-Jul-2013' AND '30-Jul-2013'
日期范围可以介于2013年6月1日到2013年7月30日之间

我怎么能这样显示

Count    Week

23      wk1 
45      wk2 
67      wk3 
34      wk4 
78      wk5   
and so on....

提前感谢

查看此网站并搜索
IW(ISO周)

您可以将您的声明更改为以下内容:

SELECT   count(log.end_date) Count,
         to_char( date log.end_date, 'IW' ) Week
FROM     tablename 
WHERE    log.end_date between '01-Jul-2013' AND '30-Jul-2013'
GROUP BY to_char( date log.end_date, 'IW' )
编辑:

没有把问题的一部分纳入我的提问。下面是一个更新版本,它减去第一周的ISO周,并添加一个以获得wk1、wk2、wk3

SELECT   count(log.end_date) Count,
         'wk' || (1 + to_char( date log.end_date, 'IW' ) - to_char( date '01-Jul-2013', 'IW')) Week
FROM     tablename 
WHERE    log.end_date between '01-Jul-2013' AND '30-Jul-2013'
GROUP BY to_char( date log.end_date, 'IW' )

您正在寻找IW或WW格式的to_字符。您还将在本周前寻找分组方式:

select count(*), to_char(end_date,'IW')
from tablename 
where trunc(end_date) between to_date('01-07-2013','dd-mm-yyyy') and to_date('30-07-2013','dd-mm-yyyy')
group by to_char(end_date,'IW')
order by to_char(end_date,'IW');
来自Oracle:

IW一年中的一周(1-52或1-53),基于ISO标准

WW一年中的一周(1-53),其中第一周从一年中的第一天开始,持续到一年中的第七天


你对一周的定义是什么?一周可以从周一到周日或周日到周六。这真的没关系——可以被视为周一到周日,但计数应该从第1周、第2周开始……等等。ThanksHow您是否定义了第一周?假设日期范围为2013年6月1日至2013年6月8日,星期为星期六。第一周的日期为01(星期三)、02(星期四)、03(星期五)、04(星期六),而日期为05(星期日)、06(星期一)、07(星期二)、08(星期三)在第二周内下降,以此类推……谢谢。因此,周的编号与数据中的第一周一致?该数据显示在ISO week-week of the year中。在尝试执行编辑版本时,我遇到了无效的数字错误。请尝试不同的计算,如
to_char(date log.end_date,'IW')-to_char(date'01-Jul-2013',IW'))
并报告发生的情况,以便让您知道我为什么更改where子句:1。trunc包含时间部分的日期(例如,2013年7月30日05:00不在2013年7月1日和2013年7月30日之间)。2.你相信甲骨文知道七月的意思。它在英语数据库上运行,但在另一个数据库上可能不运行(例如,在我的德国系统上,Oct将是Okt)。