我必须处理每周检索和分组的数据(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')
它似乎不起作用。 有关如何处理问题的任何建议吗?
非常感谢!
答案 0 :(得分:0)
如果您希望收到前3周,则必须减去21天。如果你减去3,那么你只收到最后三天。
答案 1 :(得分:0)
你需要使用' IW'而不是' WW'作为ISO周的格式掩码。来自Oracle文档:
IW =基于ISO标准的一年中的一周(1-52或1-53)。
WW =一年中的一周(1-53),其中第1周从一年的第一天开始 一直持续到今年的第七天。