我會計算上週日和上週六每週一。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
我會計算上週日和上週六每週一。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
鑑於你的問題,其中查詢將僅在星期一運行,目標是獲取日期如上所述,解決它的一種方法是:
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
分享和享受。
對於那些希望獲得最後的週末(週六,週日),在本週,其中第一天是星期一,這裏是一個另類:
select today as todays_date,
next_day(today - 7, 'sat') as prev_saturday,
next_day(today - 7, 'sun') as prev_sunday
from dual
我們的Oracle不喜歡'今天',所以我用'sysdate'取代了預期的結果 - 感謝教我關於'next_day'的功能! –
查詢爲獲得最後一個星期日:
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
這種方法的好處是,你可以每天做到這一點查詢一週的享受
可能的重複[在oracle中查找星期幾](http://stackoverflow.com/questions/12815968/finding-day-of-the-week-in-oracle) –
爲什麼是一週前的「最後一個星期日」以及前一天的最後一個星期一。這沒有意義。 –
@a_horse_with_no_name這是因爲在這裏(這家公司),星期日是一週的第一天,星期六是一週的最後一天。所以在星期一,這實際上是第二天的一週。所以'上個星期天'和'上個星期六'將相隔5天。 – thotwielder