web-dev-qa-db-fra.com

Comment extraire le numéro de semaine en sql

J'ai une colonne transdate de type varchar2 qui a les entrées suivantes 

01/02/2012
01/03/2012

etc.

Je l'ai converti au format date dans une autre colonne à l'aide de la fonction to_date. C'est le format que j'ai.

01-JAN-2012
03-APR-2012

Quand j'essaye d'extraire le weekno, j'obtiens toutes les valeurs nulles. 

sélectionnez to_char (to_date (TRANSDATE), 'w') en tant que weekno du nomtable.

null
null

Comment obtenir weekno from date dans le format ci-dessus? 

15
user2133404

Après avoir converti votre date varchar2 en un type de données date, puis reconvertissez-le en varchar2 avec le masque souhaité:

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

Si vous voulez le numéro de semaine dans un type de données number, vous pouvez envelopper la déclaration dans to_number():

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

Cependant, vous avez plusieurs options de numéro de semaine à prendre en compte:

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.
56
Wolf

Essayez de remplacer "w" par "iw" . Par exemple:

SELECT to_char(to_date(TRANSDATE, 'dd-mm-yyyy'), 'iw') as weeknumber from YOUR_TABLE;
3
Vinicius Lima
Select last_name, round (sysdate-hire_date)/7,0) as tuner 
  from employees
  Where department_id = 90 
  order by last_name;
0
Sheen