You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle中如何以周日为周起始日计算星期几?

解决Oracle中以周日为一周起始日的星期计算问题

方法1:通过NLS参数指定周起始规则

直接在TO_CHAR函数中指定NLS_TERRITORY参数,选择以周日为周起始的地区(如美国),无需修改会话全局设置:

SELECT TO_CHAR(TO_DATE('2022-09-12', 'YYYY-MM-DD'), 'D', 'NLS_TERRITORY=AMERICA') FROM DUAL;

执行后返回6,符合需求。该参数仅作用于当前TO_CHAR调用,临时生效。

如果需要全局生效,可修改会话参数:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';

之后执行SELECT TO_CHAR(SYSDATE, 'D') FROM DUAL;,将默认以周日为周起始日返回结果。

方法2:使用数学计算转换结果

利用MOD函数做数值转换,完全避免CASE语句:

SELECT MOD(TO_NUMBER(TO_CHAR(TO_DATE('2022-09-12', 'YYYY-MM-DD'), 'D')), 7) + 1 FROM DUAL;

逻辑说明:

  • Oracle默认'D'返回值规则:周一=1、周二=2、…、周六=6、周日=7
  • 通过MOD(值,7)将周日的7转为0,其余日期的返回值保持不变
  • 最后加1,得到目标规则:周日=1、周一=2、…、周五=6、周六=7

内容的提问来源于stack exchange,提问作者deepankar srigyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:55:23