如何在sql中提取周数

时间:2013-05-13 19:53:45

标签: sql oracle oracle-sqldeveloper

我有一个varchar2类型的transdate列,它有以下主菜

01/02/2012
01/03/2012

我使用to_date函数将其转换为另一列中的日期格式。这是我得到的格式。

01-JAN-2012
03-APR-2012

当我试图提取weekno时,我得到所有空值。

选择to_char(to_date(TRANSDATE),'w')作为tablename的weekno。

null
null

如何以上述格式从日期获取weekno?

4 个答案:

答案 0 :(得分:56)

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.

答案 1 :(得分:3)

尝试将'w'替换为'iw'。 例如:

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

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

如果您使用答案中指定的第二个日期格式,请使用'dd-mon-yyyy'。例如:

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