如何使用sysdate在某一周的任何一天获取当前的业务周?我想要一条sql语句,它使我在不需要5个不同sql语句的情况下,就可以在当前一周内活动。这个是可能的吗?
发布于 2013-11-04 10:09:22
SELECT SYSDATE
FROM DUAL
;
-- 2013-11-04 11:06:14
SELECT TRUNC(SYSDATE+3) - (TO_CHAR(SYSDATE+3, 'D') - 1)
, TRUNC(SYSDATE+3) - (TO_CHAR(SYSDATE+3, 'D') - 5)
FROM DUAL
;
-- 2013-11-04 00:00:00 2013-11-08 00:00:00
SELECT TRUNC(SYSDATE+2) - (TO_CHAR(SYSDATE+2, 'D') - 1)
, TRUNC(SYSDATE+2) - (TO_CHAR(SYSDATE+2, 'D') - 5)
FROM DUAL
;
-- 2013-11-04 00:00:00 2013-11-08 00:00:00
SELECT TRUNC(SYSDATE+1) - (TO_CHAR(SYSDATE+1, 'D') - 1)
, TRUNC(SYSDATE+1) - (TO_CHAR(SYSDATE+1, 'D') - 5)
FROM DUAL
;
-- 2013-11-04 00:00:00 2013-11-08 00:00:00
SELECT TRUNC(SYSDATE) - (TO_CHAR(SYSDATE, 'D') - 1)
, TRUNC(SYSDATE) - (TO_CHAR(SYSDATE, 'D') - 5)
FROM DUAL
;
-- 2013-11-04 00:00:00 2013-11-08 00:00:00发布于 2013-11-04 00:13:54
我认为您必须使用日()函数来实现这一点。要在1 SQL语句中执行此函数,您必须尝试一些此函数的组合。
这是一些伪码。我还没有测试过这个,但应该足够让你开始了。
where my_operating_date >= next_day( trunc(sysdate) - interval '7' day, 'MON')
and my_operating_date < next_day( trunc(sysdate) - interval '2' day, 'FRI')我修改了来自这根线的pseduo代码,该代码满足了前一周的类似要求。关于这个答案的解释应该能让你走。一定要对边缘情况进行大量的测试,比如现在是星期一还是星期五。
https://stackoverflow.com/questions/19758743
复制相似问题