Как извлечь номер недели в sql

У меня есть трансдатный столбец типа varchar2, который имеет следующие входы

01/02/2012
01/03/2012

и др.

Я преобразовал его в формат даты в другой столбец, используя функцию to_date. Это формат, который я получил.

01-JAN-2012
03-APR-2012

Когда я пытаюсь извлечь weekno, я получаю все нулевые значения.

выберите to_char (to_date (TRANSDATE), 'w') как weekno из tablename.

null
null

Как получить неделю с даты в вышеуказанном формате?

Ответ 1

После преобразования даты varchar2 в настоящий тип данных date, затем вернитесь к varchar2 с помощью необходимой маски:

to_char(to_date('01/02/2012','MM/DD/YYYY'),'WW')

Если вам нужен номер недели в типе number, вы можете обернуть оператор в to_number():

to_number(to_char(to_date('01/02/2012','MM/DD/YYYY'),'WW'))

Тем не менее, у вас есть несколько вариантов количества недель:

WW  Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
W   Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.
IW  Week of year (1-52 or 1-53) based on the ISO standard.

Ответ 2

Попробуйте заменить 'w' на 'iw'. Например:

SELECT to_char(to_date(TRANSDATE, 'dd-mm-yyyy'), 'iw') as weeknumber from YOUR_TABLE;

Ответ 3

Select last_name, round (sysdate-hire_date)/7,0) as tuner 
  from employees
  Where department_id = 90 
  order by last_name;

Ответ 4

Используйте 'dd-mon-yyyy', если вы используете второй формат даты, указанный в ответе. Пример:

to_date(<column name>,'dd-mon-yyyy')