条件检查与特定的星期开始日期

时间:2018-07-31 13:15:49

标签: oracle

我正在尝试检查当前周是否存在特定的一天。 但是我希望本周从星期日到星期六。截至目前,一周是从星期一到星期日。这是我的查询:

@JsonTypeName("CAT")
public class CatTopic extends A implements AlpahInterface, BetaInterface, CharlieInterface {}

我是oracle的新手,所以有人可以帮忙吗?

SELECT count(d3.COL02) ,d3.COL01 from Table  d3 where TO_CHAR(d3.COL10, 'YYYYWW') = TO_CHAR(SYSDATE, 'YYYYWW');

执行查询TableA contains following data: ID,COL01,COL02,COL10 1,199,10,28-07-18 2,199,10,29-07-18 3,199,20,30-07-18 4,199,20,31-07-18

提供输出

SELECT count(d3.COL02) ,d3.COL01 from TableA d3 where TO_CHAR(d3.COL10, 'YYYYWW') = TO_CHAR(SYSDATE, 'YYYYWW') group by d3.COL01;

但期望输出:

count(COL02),COL01
2,199

2 个答案:

答案 0 :(得分:2)

查看此查询:

with tableA(id, col01, col02, col10) as (
    select 1, 199, 10, date '2018-07-28' from dual union all
    select 2, 199, 10, date '2018-07-29' from dual union all
    select 3, 199, 20, date '2018-07-30' from dual union all
    select 4, 199, 20, date '2018-07-31' from dual )
select d3.col10, 
       to_char(col10, 'day', 'nls_date_language=English') day, 
       to_char(col10, 'yyyyww') yw,
       to_char(col10 + 1, 'yyyyww') yw1
  from tableA d3 

结果:

COL10       DAY       YW     YW1
----------- --------- ------ ------
2018-07-28  saturday  201830 201830
2018-07-29  sunday    201830 201831
2018-07-30  monday    201831 201831
2018-07-31  tuesday   201831 201831

YW列是现在的内容,当您添加一天的日期时,将星期日分配给下周。因此,将您的条件更改为:

where to_char(d3.col10 + 1, 'yyyyww') = to_char(sysdate + 1, 'yyyyww')

答案 1 :(得分:0)

这将起作用:

select  count(*)from TableA d3 where to_char(d3.col10,'IW')=to_char(sysdate,'IW');

并且输出将是2本身,因为前几个月分别是7月28日和29日。