Я пытаюсь получить номера недель между двумя датами.Номера недель между двумя датами
Например, между датами 01/01/2016 и 29/02/2016 я должен
S01 S02 S03 S04 S05 S06 S07 S08
Возможно ли это? Как это можно сделать?
Я пытаюсь получить номера недель между двумя датами.Номера недель между двумя датами
Например, между датами 01/01/2016 и 29/02/2016 я должен
S01 S02 S03 S04 S05 S06 S07 S08
Возможно ли это? Как это можно сделать?
SELECT 'S' || LPAD(LEVEL, 2, '0')
FROM DUAL
CONNECT BY DATE '2016-01-01' + (LEVEL - 1) * 7 <= DATE '2016-02-29';
Выход:
'S'||LPAD(LEVEL,2,'0')
----------------------
S01
S02
S03
S04
S05
S06
S07
S08
S09
Update - с месяца & датами:
Примечание: изменены границы, чтобы подчеркнуть разницу между номером недели и порядковый номер.
WITH bounds AS (
SELECT DATE '2016-03-01' AS lower_bound,
DATE '2016-04-30' AS upper_bound
FROM DUAL
),
weeks AS (
SELECT LEVEL AS id,
lower_bound + (LEVEL - 1) * 7 AS week_date
FROM bounds
CONNECT BY lower_bound + (LEVEL - 1) * 7 <= upper_bound
)
SELECT 'S' || LPAD(id, 2, '0') AS id,
'W' || TO_CHAR(week_date, 'WW') AS week,
'M' || TO_CHAR(week_date, 'MM') AS month,
week_date
FROM weeks;
Выход:
ID WEEK MONTH WEEK_DATE
--- ---- ----- ---------
S01 W09 M03 01-MAR-16
S02 W10 M03 08-MAR-16
S03 W11 M03 15-MAR-16
S04 W12 M03 22-MAR-16
S05 W13 M03 29-MAR-16
S06 W14 M04 05-APR-16
S07 W15 M04 12-APR-16
S08 W16 M04 19-APR-16
S09 W17 M04 26-APR-16
Это ТОЧНО, что я хотел !! Спасибо, чувак: D –
У вас его есть в течение нескольких месяцев? –
M01, M02 вы видите? Месяцы - две даты. –
Если вы хотите неделю число календаря, то вы можете использовать подобный иерархический подход к ответу МТО в:
select distinct 'S' || to_char(date '2016-01-01' + level -1, 'WW') as week_num
from dual
connect by level <= date '2016-02-29' - date '2016-01-01'
order by week_num;
WEE
---
S01
S02
S03
S04
S05
S06
S07
S08
S09
Если вы хотите ISO недель затем используйте IW вместо WW, но это делает первую неделю S53 (с прошлого года).
У вас есть таблица, содержащая все даты? – sagi
Каковы номера недель; календарных недель? Ионные номера ISO в течение года? Что представляет собой S? Вы хотите полные недели в диапазоне или в какие-то частичные недели? –