2013-07-08 222 views
1

我會計算上週日和上週六每週一。oracle sql得到上週日和上週六

E.g.今天是2013 7月8日星期一

的最後一個星期日:2013 00:00:00

6月30日最後一個星期六:2013 23:59:59 7月6日。

注意的最後一個星期日爲00:00:00和最後一個週六,直到23:59:59

+0

可能的重複[在oracle中查找星期幾](http://stackoverflow.com/questions/12815968/finding-day-of-the-week-in-oracle) –

+2

爲什麼是一週前的「最後一個星期日」以及前一天的最後一個星期一。這沒有意義。 –

+0

@a_horse_with_no_name這是因爲在這裏(這家公司),星期日是一週的第一天,星期六是一週的最後一天。所以在星期一,這實際上是第二天的一週。所以'上個星期天'和'上個星期六'將相隔5天。 – thotwielder

回答

2

鑑於你的問題,其中查詢將僅在星期一運行,目標是獲取日期如上所述,解決它的一種方法是:

SELECT TRUNC(SYSDATE) AS TODAYS_DATE, 
     TRUNC(SYSDATE)-8 AS PREVIOUS_SUNDAY, 
     TRUNC(SYSDATE) - (INTERVAL '1' DAY + INTERVAL '1' SECOND) AS PREVIOUS_SATURDAY 
    FROM DUAL 

分享和享受。

5

對於那些希望獲得最後的週末(週六,週日),在本週,其中第一天是星期一,這裏是一個另類:

select today as todays_date, 
     next_day(today - 7, 'sat') as prev_saturday, 
     next_day(today - 7, 'sun') as prev_sunday 
from dual 
+0

我們的Oracle不喜歡'今天',所以我用'sysdate'取代了預期的結果 - 感謝教我關於'next_day'的功能! –

2

查詢爲獲得最後一個星期日:

SELECT TRUNC(SYSDATE)-(select to_char(sysdate, 'd') FROM DUAL) FROM DUAL 

查詢爲獲得最後一個星期六:

SELECT TRUNC(SYSDATE)-(select to_char(sysdate, 'd')+1 from dual) FROM DUAL 

如果你想獲得一個星期日/週六你需要添加7 - ˚F或例如:

上週日:

SELECT TRUNC(SYSDATE)-(select to_char(sysdate, 'd')+7 FROM DUAL) FROM DUAL 

上週六:

SELECT TRUNC(SYSDATE)-(select to_char(sysdate, 'd')+8 FROM DUAL) FROM DUAL 

這種方法的好處是,你可以每天做到這一點查詢一週的享受

相關問題