根据当前ISO周和向后检索数据

时间:2015-02-26 08:09:04

标签: oracle date oracle11g week-number

我必须处理每周检索和分组的数据(ISO周),我的数据库每天构建(字段:DATE)。我需要写下一个正在滚动的代码,这样在给定当前日期的情况下,它也会计算前一周和前三周的检索数据。

所以我写了WHERE子句:

TO_DATE(TO_CHAR(DATE, 'YYYYWW')) BETWEEN TO_DATE(TO_CHAR(TO_DATE(running_date, 'YYYYMMDD'), 'YYYYWW'), 'YYYYWW')-3 AND TO_DATE(TO_CHAR(TO_DATE(running_date, 'YYYYMMDD'), 'YYYYWW'), 'YYYYWW')

它似乎不起作用。 有关如何处理问题的任何建议吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

如果您希望收到前3周,则必须减去21天。如果你减去3,那么你只收到最后三天。

答案 1 :(得分:0)

你需要使用' IW'而不是' WW'作为ISO周的格式掩码。来自Oracle文档:

  

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

     

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