Usuário com melhor resposta
Ajuda com erro de conversão.

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.
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
- Marcado como Resposta Ricardo Santos Bezerra terça-feira, 28 de janeiro de 2014 17:29
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. -
-
-
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.
-
-
-
-
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
- Marcado como Resposta Ricardo Santos Bezerra terça-feira, 28 de janeiro de 2014 17:29
-
entao, o tipo é date..e a data nao esta inversa, eu estou usando o
set dateformat dmy- Editado Ricardo Santos Bezerra terça-feira, 28 de janeiro de 2014 17:28 errei
-
-
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.- Editado Wennder SantosMVP terça-feira, 28 de janeiro de 2014 17:34
-
-
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?
-
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?
-