【问题标题】:Week, Month, Year number to beginning of week Date周、月、年编号到周初日期
【发布时间】:2018-01-10 18:54:34
【问题描述】:

例子:

  • 月数:03
  • 周数:10
  • 年份:2018

我希望将其转换为 2018 年 3 月 5 日,但不确定如何在 Tableau/Oracle SQL 中执行此操作。将这 3 个单独的数字转换为一周开始的逻辑是什么?本周将从星期一开始。

谢谢

【问题讨论】:

标签: sql oracle


【解决方案1】:

下面的查询应该会给你想要的结果 -

SELECT
    TO_CHAR(START_DATE,'MM/DD/YYYY') AS START_DATE
FROM
(
    SELECT 
        (TRUNC(TO_DATE('2018','YYYY'),'DAY') + 1) + ((LEVEL - 1) * 7) AS START_DATE,
        (TRUNC(TO_DATE('2018','YYYY'),'DAY') + 1) + ((LEVEL - 1) * 7) + 6 AS END_DATE, LEVEL AS WEEK
    FROM 
        DUAL
    CONNECT BY LEVEL <= (((TO_DATE('2018','YYYY') + INTERVAL '1' YEAR) + INTERVAL '-1' DAY) - (TO_DATE('2018','YYYY')))/7
)
WHERE
    WEEK = 10
;

2018 年和第 10 周在此处被硬编码以获得所需的 导致这种情况。

结果:-

START_DATE

03/05/2018

【讨论】:

    【解决方案2】:

    我觉得月份数不是必须的,你可以试试下面的代码,

    SELECT NEXT_DAY(TO_DATE((&week_no*7)||' &yyyy', 'DDD YYYY')-7, 2) date_
      FROM dual;
    
    week_no = 10
    yyyy = 2018
    
    DATE_   
    ---------
    05-MAR-18
    

    【讨论】:

      猜你喜欢
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2014-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多