SELECT
EMI_N_CODIGO
,DAT_YM
,SUM(QTD_TRAN)
FROM
PTL_FRAUDES_mês
WHERE
DAT_YM BETWEEN TO_CHAR( '10/08/2011 00:00:00' ,'YYYY') || '01' AND TO_CHAR( '25/04/2012 23:59:59' ,'YYYY') || '12'
GROUP BY
EMI_N_CODIGO
,DAT_YM
ORDER BY 1,2
Select dá erro de ORA01722-Invalid Number
-
- Rank: Analista Pleno
- Mensagens: 128
- Registrado em: Qui, 29 Mai 2008 6:44 pm
- Localização: São Paulo
Tudo posso, nAquel que me fortalece
Filipenses 4:13
Filipenses 4:13
Esse meu selec dá o erro de ORA-01722-Invalid Number. O campo DAT_YM é do tipo VarChar2(6). Como eu resolvo isso? Será a parte da hora? Tem como eu retirar a parte da hora?
-
- Moderador
- Mensagens: 641
- Registrado em: Seg, 03 Set 2007 3:26 pm
- Localização: Fortaleza - CE
att,
Daniel N.N.
Daniel N.N.
Supondo que "DAT_YM" venha no formato ex: 201102 referenciando fevereido de 2011.
Suas datas de início e fim são parâmetros???? São tipo DATE ou VARCHAR2??
Se for VARCHAR você não pode fazer:
pois você tem que informar na mascara a representação da data que quer mostrar. Mas não é data. Vai dar erro.
Porém para extrair o ano basta:
Se já for DATE basta fazer:
Agora outra alternativa, se seu campo "DAT_YM" não tiver indices, seria transformar ele para DATE:
E seus BETWEEN já serem DATE normalmente.
O principal de seu erro é só conversão de Tipo. '10/08/2011 00:00:00' é VARCHAR até que você faça um:
Suas datas de início e fim são parâmetros???? São tipo DATE ou VARCHAR2??
Se for VARCHAR você não pode fazer:
TO_CHAR('10/08/2011 00:00:00' ,'YYYY')
Porém para extrair o ano basta:
SUBSTR(param_date,7,4)
extract(YEAR FROM param_date)
TO_DATE(DAT_YM,'RRRRMM')
O principal de seu erro é só conversão de Tipo. '10/08/2011 00:00:00' é VARCHAR até que você faça um:
TO_DATE('10/08/2011 00:00:00','dd/mm/rrrr hh24:mi:ss')
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Bing [Bot] e 1 visitante