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?
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.
Essayez de remplacer "w" par "iw" . Par exemple:
SELECT to_char(to_date(TRANSDATE, 'dd-mm-yyyy'), 'iw') as weeknumber from YOUR_TABLE;
Select last_name, round (sysdate-hire_date)/7,0) as tuner
from employees
Where department_id = 90
order by last_name;