获得一周的一天
你可以使用 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