ERRO: ORA-00904: DATEDIFF: identificador inválido
Estou tentando fazer uma query que conte quantos dias há em um determinado período de datas.
Ex: De 01/01/2015 a 31/12/2015 tem 365 dias
SELECT DATEDIFF('31/12/2015', '01/01/2015')
FROM DUAL
ERRO: ORA-00904: "DATEDIFF": identificador inválido
Ex: De 01/01/2015 a 31/12/2015 tem 365 dias
SELECT DATEDIFF('31/12/2015', '01/01/2015')
FROM DUAL
ERRO: ORA-00904: "DATEDIFF": identificador inválido
André
Curtidas 0
Respostas
Marcos P
05/10/2015
Se for ORACLE... [url:descricao=https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/column_conversion_functions011.htm#GWURF780]https://docs.oracle.com/goldengate/1212/gg-winux/GWURF/column_conversion_functions011.htm#GWURF780[/url]
Senão for, indique o banco.
Senão for, indique o banco.
GOSTEI 0
André
05/10/2015
É SQL
GOSTEI 0
Marcos P
05/10/2015
Sql server com prefixo "ORA" no erro ?
Estranho !
https://msdn.microsoft.com/pt-br/library/ms189794%28v=sql.120%29.aspx
Estranho !
https://msdn.microsoft.com/pt-br/library/ms189794%28v=sql.120%29.aspx
GOSTEI 0
Marcos P
05/10/2015
Resolveu ?
GOSTEI 0
Marcos P
05/10/2015
André, você conseguiu resolver seu problema ?
Precisa de mais alguma ajuda adicional ?
Precisa de mais alguma ajuda adicional ?
GOSTEI 0
André
05/10/2015
Preciso de mais ajuda.
Não consegui com nenhuma dos dois exemplos ele fica dando o mesmo erro
Não consegui com nenhuma dos dois exemplos ele fica dando o mesmo erro
GOSTEI 0
Marcos P
05/10/2015
Qual seu banco de dados ?
Sql Server ? Oracle ? MySql ? Firebird ?
Sql Server ? Oracle ? MySql ? Firebird ?
GOSTEI 0
Gisely Santos
05/10/2015
Ola Marcos.
Penso que seja o formato de sua data (01/01/2015) tente 2015-01-01. Pelo menos no meu funcionou....
Penso que seja o formato de sua data (01/01/2015) tente 2015-01-01. Pelo menos no meu funcionou....
GOSTEI 0
Marcos P
05/10/2015
Sim o funcionamento é trivial, ainda mais com os exemplos que passei nos links acima.
Agora, sem a definição de qual banco de dados está sendo usado, fica difícil ajudar...
Agora, sem a definição de qual banco de dados está sendo usado, fica difícil ajudar...
GOSTEI 0
Gisely Santos
05/10/2015
Pelo erro do código, eu consegui identificar que se trata de um bd da oracle (MySQL). É o mesmo que eu utilizo... a função DATEDIFF não funciona por conta do formato da data.
GOSTEI 0
Marcos P
05/10/2015
Se for MySql, segue o link da documentação dessa função : [url:descricao=https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff]https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediff[/url]
Com exemplos...
Com exemplos...
GOSTEI 0
André
05/10/2015
- O meu banco é esse que o gisahchan disse oracle (MySQL)
- O Formato da data que eu uso aqui é 'dd/mm/aa'
- Usei pelo seu exemplo de MySql marcos e mesmo assim continua dando o mesmo erro
SELECT DATEDIFF ('01/01/2014 23:59:59', '31-12-2014')
FROM DUAL
Erro: ORA-00904: "DATEDIFF": identificador inválido
- O Formato da data que eu uso aqui é 'dd/mm/aa'
- Usei pelo seu exemplo de MySql marcos e mesmo assim continua dando o mesmo erro
SELECT DATEDIFF ('01/01/2014 23:59:59', '31-12-2014')
FROM DUAL
Erro: ORA-00904: "DATEDIFF": identificador inválido
GOSTEI 0
André
05/10/2015
- O meu banco é esse que o gisahchan disse oracle (MySQL)
- O Formato da data que eu uso aqui é 'dd/mm/aaaa'
- Usei pelo seu exemplo de MySql marcos e mesmo assim continua dando o mesmo erro
SELECT DATEDIFF ('01/01/2014 23:59:59', '31-12-2014')
FROM DUAL
Erro: ORA-00904: "DATEDIFF": identificador inválido
- O Formato da data que eu uso aqui é 'dd/mm/aaaa'
- Usei pelo seu exemplo de MySql marcos e mesmo assim continua dando o mesmo erro
SELECT DATEDIFF ('01/01/2014 23:59:59', '31-12-2014')
FROM DUAL
Erro: ORA-00904: "DATEDIFF": identificador inválido
GOSTEI 0
Gisely Santos
05/10/2015
Bom dia Andre.
As duas datas que você vai utilizar têm de estar no mesmo formato (aaaa-mm-dd).
As duas datas que você vai utilizar têm de estar no mesmo formato (aaaa-mm-dd).
GOSTEI 0
André
05/10/2015
Escrevi errado aqui kkkk, tentei com o mesmo formato e deu erro
GOSTEI 0
Gisely Santos
05/10/2015
veja:
GOSTEI 0
Gisely Santos
05/10/2015
[img:descricao=esqueci de mandar a imagen kkkk]http://arquivo.devmedia.com.br/forum/imagem/439048-20151007-093654.jpg[/img]
GOSTEI 0
Gisely Santos
05/10/2015
e esse DUAL seria sua tabela? que formato de data esta dentro dele? é char? date? datetime?
GOSTEI 0
André
05/10/2015
Veja:
[img]http://arquivo.devmedia.com.br/forum/imagem/457143-20151007-095451.jpg[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/457143-20151007-095451.jpg[/img]
GOSTEI 0
Gisely Santos
05/10/2015
Ok. Agora percebi. Se você for pegar um campo que contenha a data dentro de sua tabela você precisa fazer:
SELECT DATEDIFF(campo,'2014-12-31') , lembrado que o seu campo 'campo' tem de estar no formato Y-m-d, caso contrario vai dar erro.
O que você esta fazendo é tentando extrair a diferença de dois campos com formato errado, e além disso um deles possui também o horário... dessa forma não vai dar certo mesmo.
Você testou o que te falei no post acima? as duas datas apenas ( sem o horário) no formato ano-mes-dia?
SELECT DATEDIFF(campo,'2014-12-31') , lembrado que o seu campo 'campo' tem de estar no formato Y-m-d, caso contrario vai dar erro.
O que você esta fazendo é tentando extrair a diferença de dois campos com formato errado, e além disso um deles possui também o horário... dessa forma não vai dar certo mesmo.
Você testou o que te falei no post acima? as duas datas apenas ( sem o horário) no formato ano-mes-dia?
GOSTEI 0
André
05/10/2015
Sim, continua dando erro..
Você não alguma outra forma de fazer sem usar o DATEDIFF não ?
Você não alguma outra forma de fazer sem usar o DATEDIFF não ?
GOSTEI 0
Gisely Santos
05/10/2015
pra calcular a diferença entre datas não sei. Mas o fato é que o problema não é a função, mas a forma como você esta fazendo.
Você quer calcular a diferença de dias de uma data do seu banco de dados? Esse DUAL seria sua tabela? Qual o nome do campo que esta com a data?
Você quer calcular a diferença de dias de uma data do seu banco de dados? Esse DUAL seria sua tabela? Qual o nome do campo que esta com a data?
GOSTEI 0
Marcos P
05/10/2015
André,
O link que passei é a documentação oficial do MySql... não existe erro algum nos exemplos !
Se quiser confirmar, veja o exemplo que preparei em Fiddle
O link que passei é a documentação oficial do MySql... não existe erro algum nos exemplos !
Se quiser confirmar, veja o exemplo que preparei em Fiddle
GOSTEI 0
André
05/10/2015
Eu preciso que ele me informe quantos dias tem em um determinado período de data.
Dual substitui uma tabela qualquer do sistema.
Se eu quiser pegar uma data qualquer do sistema usando from dual da certo.
Dual substitui uma tabela qualquer do sistema.
Se eu quiser pegar uma data qualquer do sistema usando from dual da certo.
GOSTEI 0
Marcos P
05/10/2015
Você testou os exemplos que preparei ?
Percebeu que :
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
2007-12-31 23:59:59 - 2007-12-30 = 1 ( dia )
SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31')
2010-11-30 23:59:59 - 2010-12-31 = -31 ( dias )
Qual parte disso, você não entendeu ?
Percebeu que :
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
2007-12-31 23:59:59 - 2007-12-30 = 1 ( dia )
SELECT DATEDIFF('2010-11-30 23:59:59','2010-12-31')
2010-11-30 23:59:59 - 2010-12-31 = -31 ( dias )
Qual parte disso, você não entendeu ?
GOSTEI 0
André
05/10/2015
Marcos, eu entendi a sua expressão.
O problema é quando eu jogo la no Oracle Sql Developer ele da erro ..
Dá identificador invalido no DATEDIFF
O problema é quando eu jogo la no Oracle Sql Developer ele da erro ..
Dá identificador invalido no DATEDIFF
GOSTEI 0