Converter um campo na tabela Oracle em ano/semana (YYYYMMW) para Date?

7 respostas
P

Uma duvida ,

pois tenho em uma tabela o campo ano mais semana (YYYYMMW) onde :

campo

2008012
2008014

Minha duvida como converter ao contrario pegar esse campo e
converter para date …

Se alguém puder me ajudar gradeceria…

abs

7 Respostas

O

A coluna na tabela está com este formato (portanto a coluna deve ser do tipo VARCHAR2) ou você está colocando uma máscara (SELECT TO_CHAR(data, ‘YYYYMMW’) FROM tabela) quando recupera o dado da tabela?

P

O meu problema é oseguinte tenho na tabela no formato (YYYYMMW) e quero converter para Date…

Exemplo:

select to_date(kk.cd_periodo_semana_calend,‘yyyymmw’) from dual kk

mas da o erro :

ora-01820 codigo formato nao pode ser exibido no formato de entrada de data

O

De novo: qual o TIPO da coluna na tabela? VARCHAR2, DATE, TIMESTAMP, NUMBER, etc

P

a coluna é :

CD_PERIODO_SEMANA_CALEND NUMBER(7)

fabim

Talvez um simples SimpleDateFormat.parse funcione. Mas a questao é: vai virar um Date com que dia da semana? primeiro? ultimo?

P

isso estou tentando fazer no select não chegou ainda em uma classe (objeto)

estou tentando resolver isso no banco de dados …e não no java …???

P

Achei um jeito

onde o campo está definido assim

7 posições:

1 a 4 = ano
5 a 6 = mes
7 = semana

e fiz o codigo abaixo se servir pra alguém

abs

select case
               WHEN substr( CD_PERIODO_SEMANA_CALEND,7,7)= 1 then
                    '01'||substr(CD_PERIODO_SEMANA_CALEND,5,6)||substr(CD_PERIODO_SEMANA_CALEND,1,4)
               WHEN substr( CD_PERIODO_SEMANA_CALEND,7,7)= 2 then
                    '08'||substr(CD_PERIODO_SEMANA_CALEND,5,6)||substr(CD_PERIODO_SEMANA_CALEND,1,4)
               WHEN substr( CD_PERIODO_SEMANA_CALEND,7,7)= 3 then
                    '15'||substr(CD_PERIODO_SEMANA_CALEND,5,6)||substr(CD_PERIODO_SEMANA_CALEND,1,4)
               WHEN substr( CD_PERIODO_SEMANA_CALEND,7,7)= 4 then
                    '22'||substr(CD_PERIODO_SEMANA_CALEND,5,6)||substr(CD_PERIODO_SEMANA_CALEND,1,4)
               else     
                    '29'||substr(CD_PERIODO_SEMANA_CALEND,5,6)||substr(CD_PERIODO_SEMANA_CALEND,1,4)
             end   nova_data
      from   TB_
Criado 1 de outubro de 2008
Ultima resposta 2 de out. de 2008
Respostas 7
Participantes 3