獲得一週的一天

你可以使用 TO_CHAR( date_value, 'D' ) 來獲取星期幾。

但是,這取決於 NLS_TERRITORY 會話引數:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';        -- First day of week is Sunday
SELECT TO_CHAR( DATE '1970-01-01', 'D' ) FROM DUAL;

輸出 5

ALTER SESSION SET NLS_TERRITORY = 'UNITED KINGDOM'; -- First day of week is Monday
SELECT TO_CHAR( DATE '1970-01-01', 'D' ) FROM DUAL;

輸出 4

要獨立於 NLS 設定執行此操作,你可以將日期截斷到當天的午夜(以刪除任何天數),並將截斷的日期減去當前 iso 周的開始(始終在星期一開始):

SELECT TRUNC( date_value ) - TRUNC( date_value, 'IW' ) + 1 FROM DUAL