【问题标题】:day of the week in the week numbering一周中的星期几
【发布时间】:2013-01-10 23:50:20
【问题描述】:

在 oracle 中,可以更改一周的开始日期。 在美国的第一天是 SUN,而在欧盟 - MON

此更改通过更改 nls_territory 起作用

但是,如果我同时考虑星期几和星期编号,我有以下情况:

day week_number
  7          9   <- here it should be still week 8
  1          9
  2          9
  3          9
  4          9
  5          9
  6          9
  7         10  <- here it should still be week 9

您知道哪些 nls 应该会影响一周的 start_day 吗?

类似的帖子 Get First Day Of Week From Week Number

【问题讨论】:

  • 检查了答案接近我正在寻找的问题。然而,其他问题并没有得到我期望的答案。

标签: sql oracle date


【解决方案1】:

Oracle 有两种日期格式,可以为我们提供周数。

“WW”从 1 月 1 日开始,每 7 天递增一次。由于 01-JAN-2013 是星期二,这意味着周数在星期二递增。我猜这是您目前使用的版本。

但也有“IW”格式,这是 ISO 标准。在此版本中,周数从 1 月 1 日所在的一周的星期一开始。这具有使 31-DEC-2012 成为 2013 年第 1 周的第一个日期的特殊副作用,但这确实意味着周数总是在一周的第 1 天递增。

Find out more.

【讨论】:

    【解决方案2】:

    不确定我是否理解您的问题,并且在您的示例中,我认为 day# 和 week# 之间没有联系,抱歉......也许这会帮助您获得 ISO 周。这建立了年度周表。您可以在查询中添加 'WW' 格式并比较日期、星期的差异。 NLS 设置:

       -- ISO_WK# --
       SELECT mydate
        , TRUNC(mydate, 'w') wk_starts
        , TRUNC(mydate, 'w') + 7 - 1/86400 wk_ends
        , TO_NUMBER (TO_CHAR (mydate, 'IW')) ISO_wk#  
       FROM
       (
        SELECT TRUNC(SYSDATE, 'YEAR')-1 + LEVEL AS mydate
          FROM dual
        CONNECT BY LEVEL <= 
          (
            SELECT TRUNC(SYSDATE, 'YEAR')-TRUNC(ADD_MONTHS (SYSDATE, -12), 'YEAR') "Num of Days"   
             FROM dual
          )
       )
      /
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 2021-01-29
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多