2013-11-03 165 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碼。關於這個答案的解釋應該讓你去。請務必嚴格測試邊緣情況,例如當前日期是週一或週五。

相關問題