istudent Ответов: 1

Как определить номер недели от даты начала до конца сегодняшней недели ?


Мне нужно определить номера недель по двум датам.
У меня есть запрос в Access DB, который выглядит следующим образом. Я пытаюсь добиться того же запроса в Oracle. Как мне это сделать? Я написал запрос, но он не кажется мне правильным.

IIf(Weekday([HiredDate])=7,[HiredDate],[HiredDate]-Weekday([HiredDate])) AS TrainingStart, 
Date()+6-Weekday(Date()) AS EndOfWeek, 
DateDiff("ww",[TrainingStart],[EndOfWeek]) AS WeekNumber,


Что я уже пробовал:

SELECT Name, HiredDate, 
(CASE WHEN (to_char(to_date(HiredDate), 'd') = 7) THEN HiredDate ELSE (HiredDate - to_char(to_date(HiredDate), 'd')) END) as StartDate, 
(CURRENT_DATE + (6 - to_char(to_date(CURRENT_DATE), 'd'))) as EndDate,
(To_Number(to_char(to_date((CURRENT_DATE + (6 - to_char(to_date(CURRENT_DATE), 'd')))),'WW')) - To_number(to_char(to_date((HiredDate - to_char(to_date(HiredDate), 'd'))),'WW')) +1) as WEEKNUMBER 
FROM employee;

CHill60

Каковы результаты вашего запроса. Есть ли у вас какие-то примеры данных и ожидаемые результаты

1 Ответов

Рейтинг:
1

CHill60

Чтобы преобразовать ваш запрос доступа в Oracle …

Не меняйте правила игры. IIf - он также существует в Oracle - см. IIF - справочный центр Oracle[^]

Не меняйте правила игры. Weekday() - эта функция также существует в Oracle - см. Будний День - OracleDocs[^]

Заменять DateDiff() вы можете просто вычесть одну дату из другой - см. Типы Данных - OracleDocs[^]

Чтобы заменить Date() функцию Использовать ТЕКУЩАЯ ДАТА[^] или Компания "Новые системы"[^]