none
Ajuda com erro de conversão. RRS feed

  • Pergunta

  • Boa tarde pessoal!

    Como posso resolver essa conversão?

    Msg 245, Level 16, State 1, Line 1
    Conversion failed when converting the varchar value '01-07-2013' to data type int.


    SELECT  MONTH (tp.DTEFETIVACAO) AS MES,STRESTADO AS ESTADO,STRCIDADE AS CIDADEFROM TABENTREGAENDERECO tee (NOLOCK)INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id)INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id)WHERE YEAR (tp.DTEFETIVACAO) between '01-07-2013' AND '31-01-2014' AND (tp.INTSTATUS NOT IN (6))AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP')AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY MONTH (tp.DTEFETIVACAO), tee.STRESTADO, tee.STRCIDADEORDER BY MONTH (tp.DTEFETIVACAO)

    obrigado.

    terça-feira, 28 de janeiro de 2014 14:34

Respostas

  • Cara vc esta passando a data errada não deve ser '01-07-2013' e sim 'yyyy-MM-dd' no between.

    ficará como no código abaixo.

    SELECT 
    	month(tp.DTEFETIVACAO) AS MES
    	,STRESTADO AS ESTADO
    	,STRCIDADE AS CIDADE 
    FROM TABENTREGAENDERECO tee (NOLOCK)
    	INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id)
    	INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id)
    WHERE convert(date, tp.DTEFETIVACAO) between '2013-07-01' AND '2014-01-31'  AND (tp.INTSTATUS NOT IN (6))AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP')AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY tp.DTEFETIVACAO, tee.STRESTADO, tee.STRCIDADEORDER BY tp.DTEFETIVACAO


    Nome : Romy G. Moura Cargo: Analista Programador

    terça-feira, 28 de janeiro de 2014 17:25

Todas as Respostas

  • Olá Ricardo,

    Você está usando no where

    YEAR (tp.DTEFETIVACAO) between '01-07-2013' AND '31-01-2014'

    Porém a função Year retorna um valor inteiro contendo apenas o ano exemplo YEAR(GETDATE()) iria retornar somente um inteiro contendo 2014. Para este filtro eu aplicaria o seguinte

    convert(date, tp.DTEFETIVACAO) between '01-07-2013' AND '31-01-2014' 

    Att.
    terça-feira, 28 de janeiro de 2014 14:51
  • e no month?
    terça-feira, 28 de janeiro de 2014 16:12
  • e no month?
    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting date and/or time from character string.

    terça-feira, 28 de janeiro de 2014 16:20
  • ninguem pra me ajudar pessoal? o erro ainda é o mesmo...ainda que tenha mudado o script.

    SELECT month(tp.DTEFETIVACAO) AS MES,STRESTADO AS ESTADO,STRCIDADE AS CIDADEFROM TABENTREGAENDERECO tee (NOLOCK)INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id)INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id)WHERE convert(date, tp.DTEFETIVACAO) between '01-07-2013' AND '31-01-2014'  AND (tp.INTSTATUS NOT IN (6))AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP')AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY tp.DTEFETIVACAO, tee.STRESTADO, tee.STRCIDADEORDER BY tp.DTEFETIVACAO

    Msg 241, Level 16, State 1, Line 1
    Conversion failed when converting date and/or time from character string.


    terça-feira, 28 de janeiro de 2014 17:11
  • è a mesma ideia, as funções month, year, day retornam sempre um inteiro com o respectivo valor de mes, ano e dia.
    terça-feira, 28 de janeiro de 2014 17:15
  • certo, mas pq continua com erro? deveria puxar apenas o numero de mes, nao é isso?
    terça-feira, 28 de janeiro de 2014 17:16
  • Olá Ricardo,

    a coluna dtefetivacao é de qual tipo?

    execute o seguinte comando e nos fale qual foi retorno que você recebeu.

    select DTEFETIVACAO from TABPEDIDO

    Porque?

    Quero ver o formato que está esse campo.

    Wennder

    terça-feira, 28 de janeiro de 2014 17:23
  • Cara vc esta passando a data errada não deve ser '01-07-2013' e sim 'yyyy-MM-dd' no between.

    ficará como no código abaixo.

    SELECT 
    	month(tp.DTEFETIVACAO) AS MES
    	,STRESTADO AS ESTADO
    	,STRCIDADE AS CIDADE 
    FROM TABENTREGAENDERECO tee (NOLOCK)
    	INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id)
    	INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id)
    WHERE convert(date, tp.DTEFETIVACAO) between '2013-07-01' AND '2014-01-31'  AND (tp.INTSTATUS NOT IN (6))AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP')AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY tp.DTEFETIVACAO, tee.STRESTADO, tee.STRCIDADEORDER BY tp.DTEFETIVACAO


    Nome : Romy G. Moura Cargo: Analista Programador

    terça-feira, 28 de janeiro de 2014 17:25
  • entao, o tipo é date..e a data nao esta inversa, eu estou usando o

    set dateformat dmy
    terça-feira, 28 de janeiro de 2014 17:28
  • man...isso mesmo, desculpa, achei q tinha colocado no formato certo e por uma baita falta de atenção estava invertido...obrigado pelo toque...estava debaixo do meu nariz.
    terça-feira, 28 de janeiro de 2014 17:30
  • Ricardo,

    tente dessa forma:

    SELECT month(tp.DTEFETIVACAO) AS MES,STRESTADO AS ESTADO,STRCIDADE AS CIDADE FROM TABENTREGAENDERECO tee (NOLOCK)INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id) INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id) WHERE convert(date, tp.DTEFETIVACAO) between convert(date,'01-07-2013') AND convert(date,'31-01-2014')  AND (tp.INTSTATUS NOT IN (6)) AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP') AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY tp.DTEFETIVACAO, tee.STRESTADO, tee.STRCIDADEORDER BY tp.DTEFETIVACAO

    De um retorno.

    Att

    Wennder A. Santos

    Se foi útil, marque como útil. Se respondeu sua pergunta ou sanou sua dúvida, marque como resposta.
    terça-feira, 28 de janeiro de 2014 17:33
  • É nóis cara, o forum é pra essas coisas também, boa sorte!

    Abraço!


    Nome : Romy G. Moura Cargo: Analista Programador

    terça-feira, 28 de janeiro de 2014 17:43
  • obrigado por todas as respostas, mas só mais uma duvida, esse meu script será lançado no ssrs e preciso gerar esses campos de data como parametros e tenho uma critica como retorno...como solucionar?

    set dateformat dmy/*DECLARE @DATAINICIO AS VARCHAR(10), @DATAFIM AS VARCHAR(10)SET @DATAINICIO = '01-07-2013'SET @DATAFIM = '31-01-2014'*/SELECT month(tp.DTEFETIVACAO) AS MES,STRESTADO AS ESTADO,STRCIDADE AS CIDADE,SUM(mnyTotalJuro) AS VALORTOTALFROM TABENTREGAENDERECO tee (NOLOCK)INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id)INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id)WHERE convert(date, tp.DTEFETIVACAO) between '@DATAINICIO' AND '@DATAFIM'  AND (tp.INTSTATUS NOT IN (6))AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP')AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY tp.DTEFETIVACAO, tee.STRESTADO, tee.STRCIDADEORDER BY STRESTADO

    Msg 241, Level 16, State 1, Line 11
    Conversion failed when converting date and/or time from character string.

    o que é necessário fazer nos parâmetros?

    terça-feira, 28 de janeiro de 2014 18:25
  • obrigado por todas as respostas, mas só mais uma duvida, esse meu script será lançado no ssrs e preciso gerar esses campos de data como parametros e tenho uma critica como retorno...como solucionar?

    set dateformat dmy/*DECLARE @DATAINICIO AS VARCHAR(10), @DATAFIM AS VARCHAR(10)SET @DATAINICIO = '01-07-2013'SET @DATAFIM = '31-01-2014'*/SELECT month(tp.DTEFETIVACAO) AS MES,STRESTADO AS ESTADO,STRCIDADE AS CIDADE,SUM(mnyTotalJuro) AS VALORTOTALFROM TABENTREGAENDERECO tee (NOLOCK)INNER JOIN TABDETALHEPEDIDO tdp (NOLOCK) ON (tdp.intPedido_Id = tee.intPedido_Id)INNER JOIN TABPEDIDO tp (NOLOCK) ON (tp.Id = tdp.intPedido_Id)WHERE convert(date, tp.DTEFETIVACAO) between '@DATAINICIO' AND '@DATAFIM'  AND (tp.INTSTATUS NOT IN (6))AND tee.STRESTADO IN ('RR', 'AP', 'AC', 'AM', 'SE', 'RO', 'TO', 'PI', 'AL', 'RN', 'PB' ,'MT' ,'MA' ,'MS' ,'DF' ,'PA' ,'GO' ,'CE' ,'ES' ,'PE' ,'BA' ,'SC' ,'PR' ,'RS' ,'RJ' ,'MG' ,'SP')AND tp.INTSTATUS IN (2, 28, 29, 38, 39, 40)GROUP BY tp.DTEFETIVACAO, tee.STRESTADO, tee.STRCIDADEORDER BY STRESTADO

    Msg 241, Level 16, State 1, Line 11
    Conversion failed when converting date and/or time from character string.

    o que é necessário fazer nos parâmetros?

    não digam que é só tirar as aspas...só faltava..vou testar..mas perdi conexão com o servidor aqui..
    terça-feira, 28 de janeiro de 2014 18:30
  • só era, tirei as aspas dos parâmetros e foi...mesmo assim valeu pela paciência e ajuda pessoal.
    terça-feira, 28 de janeiro de 2014 18:38