在 Oracle 中将一周的第一天设置为星期日而不是星期一

Ant*_*yDa 0 sql oracle week-number

我有以下查询:

SELECT forecastDate, to_char(to_date(forecastDate),'WW') AS WEEK_NUMBER
FROM ACT_FORECAST
Run Code Online (Sandbox Code Playgroud)

这给了我这个结果:

forecastDate | WEEK_NUMBER
14/07/2017     28
15/07/2017     28
16/07/2017     29
Run Code Online (Sandbox Code Playgroud)

但在我所在的地区,周一开始的一周,我应该有 28 个 2017 年 7 月 16 日。

我的数据库的 NLS_TERRITORY 值是“法国”。

我尝试了多种方法,但没有任何效果。

有任何想法吗?

谢谢

Wer*_*eit 5

原因是格式WW,其中文件说:

WW

一年中的第 1 周 (1-53),其中第 1 周从一年的第一天开始并持续到一年的第七天。

幸运的是,在 ISO-8601 上,一周的第一天也是星期一,因此您可以使用

SELECT forecastDate, to_char(to_date(forecastDate),'IW') AS WEEK_NUMBER
FROM ACT_FORECAST
Run Code Online (Sandbox Code Playgroud)

信息战

一年中的日历周(1-52 或 1-53),由 ISO 8601 标准定义。

  • 日历周从星期一开始。

  • 一年中的第一个日历周包括 1 月 4 日。

  • 一年中的第一个日历周可能包括 12 月 29 日、30 日和 31 日。

  • 一年中的最后一个日历周可能包括 1 月 1 日、2 日和 3 日。

顺便说一句,您应该将列的数据类型更改forecastDateDATEor TIMESTAMP