如何在Oracle中获取本周的数据
如何在Oracle中获取本周的数据?假设一周从星期天到星期六如何在Oracle中获取本周的数据,oracle,date,Oracle,Date,如何在Oracle中获取本周的数据?假设一周从星期天到星期六 SELECT * FROM TABLENAME WHERE DATEFIELD IS {WITHIN CURRENT WEEK THAT GOES FROM 12AM ON SUNDAY TO 11:59PM ON SATURDAY} 使用Oracle truncsysdate,'IW'返回一周的第一天,并添加6以获得周末 -- not tested SELECT * FROM TABLENAME WHERE DATEFIELD &
SELECT * FROM TABLENAME
WHERE DATEFIELD IS {WITHIN CURRENT WEEK THAT GOES FROM 12AM ON SUNDAY TO 11:59PM ON SATURDAY}
使用Oracle truncsysdate,'IW'返回一周的第一天,并添加6以获得周末
-- not tested
SELECT * FROM TABLENAME
WHERE DATEFIELD >= trunc ( sysdate, 'iw' )
AND DATEFIELD < trunc ( sysdate, 'iw' ) + 5
不完全是这样,因为OP明确规定了一周从周日到周六,而ISO周IW从周一到周日。这很容易修复;你知道怎么做吗?这可以通过从trunc sysdate'iw'中减去-1来实现。这是它的一半。假设某人出于某种原因可能在周日运行查询,那么它在周日不起作用。毫无例外的完整解决方案是将1添加到sysdate,然后截断为“iw”,然后从结果中减去1。您可能需要编辑答案,以显示OP问题的正确公式。另外:由于数据可能存在于周末,在最后一种情况下,您应该添加7而不是5-以防万一。例如,如果数据是sales,那么它们也可能发生在周六或周日。请使用DY开始一周的日期,而不是IW ISO日历周的第一天。@Andreas-first,DY只是指一周中某一天的简称,例如星期天的SUN,它与周初无关。第二,一周的开始日期取决于区域设置;OP请求的查询具有硬编码的week,不依赖于区域设置。在上述评论中讨论的更正之后,此处显示的解决方案是OP要求的正确方法。