周,月,年号到周初日期

时间:2018-01-10 18:54:34

标签: sql oracle

示例:

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

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

由于

2 个答案:

答案 0 :(得分:0)

以下查询应该为您提供所需的结果 -

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

2018年3月5日

答案 1 :(得分:0)

我认为没有必要使用月号,您可以尝试下面的代码,

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