有些業務場景下會有擇出周末的需求,具體判斷語句如下: 1、SELECT TO_CHAR(TO_DATE(DATA_DATE,'YYYY-MM-DD),'D') FROM DUAL; 如果DATA_DATE為星期六則結果為7,如果DATA_DATE為星期日則結果為1,所以TO_CHAR(TO_DATE ...
有些業務場景下會有擇出周末的需求,具體判斷語句如下:
1、SELECT TO_CHAR(TO_DATE(DATA_DATE,'YYYY-MM-DD),'D') FROM DUAL;
如果DATA_DATE為星期六則結果為7,如果DATA_DATE為星期日則結果為1,所以TO_CHAR(TO_DATE(DATA_DATE,'YYYY-MM-DD),'D') NOT IN ('1','7')即可;
2、SELECT TO_CHAR(TO_DATE(DATA_DATE,'YYYY-MM-DD),'DAY') FROM DUAL;
根據 nls_date_language 的配置參數,結果為 'SATURDAY' 'SUNDAY' 或者 '星期六' '星期日'
另外需要註意的是語句在to_char為day的過程中,day的寫法決定了saturday sunday的大小寫
DAY-> 'SATURDAY' 'SUNDAY'
day-> 'saturday' 'sunday'
Day-> 'Saturday' 'Sunday'
但總有一些特殊情況,偶爾情況下還是需要周末的數據,但大方向是擇出周末,提供一個思路:
使用一張配置表,表中可列出日曆(如1900-01-01~2099-12-31),再插入一個開關欄位(0為生效,1為失效),日常周末開關狀態為1,需要使用的置為0
如有更好的方案歡迎交流。