2013-11-03 127 views
0

如何在一周中的任何指定日期使用sysdate获取当前工作周?我希望有一个sql语句为我提供本周运行的活动,而不必拥有5个不同的sql语句。这可能吗?使用系统日期获取星期一 - 星期五

+0

几乎可以肯定,是的。然而,我并不确定你在问什么,因为对于问题的答案_“如何在本周的任何一天使用系统日期获取当前的工作周?”是该问题的最后三个单词;通过使用系统日期'sysdate'。你能否更具体地了解你想要做什么;还包括数据和可能的查询? – Ben

回答

1
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 
1

我想你将不得不使用next_day()函数来实现这一点。你将不得不尝试这个函数的几个组合来在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') 

我从this SO thread,解决了前一周获得了类似的要求修改了pseduo码。关于这个答案的解释应该让你去。请务必严格测试边缘情况,例如当前日期是周一或周五。

相关问题