Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
如何在Oracle中获取本周的数据_Oracle_Date - Fatal编程技术网

如何在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 &

如何在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 >= 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要求的正确方法。