COMO CONCATENAR DATAS DENTRO DE UMA VARIÁVEL?
OLÁ PESSOAL BOA TARDE ESTOU COM DIFICULDADE DE FAZER ESSA EXECUÇÃO NO SQL SERVER.
USE TUBO_AGUAS
DECLARE @DATAINICIAL DATETIME, @DATAFINAL DATETIME, @NOMEVENDEDOR AS VARCHAR(MAX), @CODVENDEDOR AS INT, @CODUSUARIO AS INT, @BDDESTINO AS VARCHAR(MAX),@BDORIGEM AS VARCHAR(MAX), @STRSQL AS VARCHAR(MAX)
SET @DATAINICIAL='2020-01-01'
SET @DATAFINAL='2020-07-28'
SET @NOMEVENDEDOR='HULDA'
SET @CODVENDEDOR=1
SET @CODUSUARIO=1
SET @BDDESTINO=' TUBO_AGUAS.dbo.CPExterno '
SET @BDORIGEM=' NFETUBO_AGUAS.dbo.Cnota '
SET @STRSQL='insert into ' + CAST(@BDDESTINO AS VARCHAR) + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL) select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal from ' + CAST(@BDORIGEM AS VARCHAR) + ' WHERE DataNota>= ' + CAST(@DATAINICIAL AS DATETIME) + ' AND DataNota<= ' + CAST(@DATAFINAL AS DATETIME)
EXEC(@STRSQL)
SEMPRE DA ESSE ERRO
Mensagem 242, Nível 16, Estado 3, Linha 7
A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo.
Mensagem 241, Nível 16, Estado 1, Linha 20
Falha ao converter data e/ou hora da cadeia de caracteres.
PODERIAM ME AJUDAR PORFAVOR
USE TUBO_AGUAS
DECLARE @DATAINICIAL DATETIME, @DATAFINAL DATETIME, @NOMEVENDEDOR AS VARCHAR(MAX), @CODVENDEDOR AS INT, @CODUSUARIO AS INT, @BDDESTINO AS VARCHAR(MAX),@BDORIGEM AS VARCHAR(MAX), @STRSQL AS VARCHAR(MAX)
SET @DATAINICIAL='2020-01-01'
SET @DATAFINAL='2020-07-28'
SET @NOMEVENDEDOR='HULDA'
SET @CODVENDEDOR=1
SET @CODUSUARIO=1
SET @BDDESTINO=' TUBO_AGUAS.dbo.CPExterno '
SET @BDORIGEM=' NFETUBO_AGUAS.dbo.Cnota '
SET @STRSQL='insert into ' + CAST(@BDDESTINO AS VARCHAR) + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL) select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal from ' + CAST(@BDORIGEM AS VARCHAR) + ' WHERE DataNota>= ' + CAST(@DATAINICIAL AS DATETIME) + ' AND DataNota<= ' + CAST(@DATAFINAL AS DATETIME)
EXEC(@STRSQL)
SEMPRE DA ESSE ERRO
Mensagem 242, Nível 16, Estado 3, Linha 7
A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo.
Mensagem 241, Nível 16, Estado 1, Linha 20
Falha ao converter data e/ou hora da cadeia de caracteres.
PODERIAM ME AJUDAR PORFAVOR
Daniel
Curtidas 0
Respostas
Emerson Nascimento
31/07/2020
tente assim:
o problema é que na última linha você estava tentando transformar conteúdos DATETIME (@DATAINICIAL, @DATAFINAL) em DATETIME (isso mesmo), e tentando concatenar com uma string.
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
DECLARE @DATAINICIAL DATETIME, @DATAFINAL DATETIME, @NOMEVENDEDOR AS VARCHAR(MAX), @CODVENDEDOR AS INT, @CODUSUARIO AS INT, @BDDESTINO AS VARCHAR(MAX), @BDORIGEM AS VARCHAR(MAX), @STRSQL AS VARCHAR(MAX) SET @DATAINICIAL='2020-01-01' SET @DATAFINAL = '2020-07-28' SET @NOMEVENDEDOR='HULDA' SET @CODVENDEDOR=1 SET @CODUSUARIO=1 SET @BDORIGEM = 'NFETUBO_AGUAS.dbo.Cnota ' SET @BDDESTINO = 'TUBO_AGUAS.dbo.CPExterno ' SET @STRSQL = ' insert into ' + @BDDESTINO + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL)'+ ' select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal'+ ' from ' + @BDORIGEM + ' where DataNota Between ''' + convert(varchar(10),@DATAINICIAL,23) + ''' AND ''' + convert(varchar(10),@DATAFINAL,23) + '''' EXEC(@STRSQL)
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
GOSTEI 0
Daniel
31/07/2020
tente assim:
o problema é que na última linha você estava tentando transformar conteúdos DATETIME (@DATAINICIAL, @DATAFINAL) em DATETIME (isso mesmo), e tentando concatenar com uma string.
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
DECLARE @DATAINICIAL DATETIME, @DATAFINAL DATETIME, @NOMEVENDEDOR AS VARCHAR(MAX), @CODVENDEDOR AS INT, @CODUSUARIO AS INT, @BDDESTINO AS VARCHAR(MAX), @BDORIGEM AS VARCHAR(MAX), @STRSQL AS VARCHAR(MAX) SET @DATAINICIAL='2020-01-01' SET @DATAFINAL = '2020-07-28' SET @NOMEVENDEDOR='HULDA' SET @CODVENDEDOR=1 SET @CODUSUARIO=1 SET @BDORIGEM = 'NFETUBO_AGUAS.dbo.Cnota ' SET @BDDESTINO = 'TUBO_AGUAS.dbo.CPExterno ' SET @STRSQL = ' insert into ' + @BDDESTINO + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL)'+ ' select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal'+ ' from ' + @BDORIGEM + ' where DataNota Between ''' + convert(varchar(10),@DATAINICIAL,23) + ''' AND ''' + convert(varchar(10),@DATAFINAL,23) + '''' EXEC(@STRSQL)
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
Amigo boa tarde,
eu tentei desse jeito mas deu a seguinte mensagem
Mensagem 242, Nível 16, Estado 3, Linha 12
A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo.
o que poderia ser?
GOSTEI 0
Daniel
31/07/2020
tente assim:
o problema é que na última linha você estava tentando transformar conteúdos DATETIME (@DATAINICIAL, @DATAFINAL) em DATETIME (isso mesmo), e tentando concatenar com uma string.
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
DECLARE @DATAINICIAL DATETIME, @DATAFINAL DATETIME, @NOMEVENDEDOR AS VARCHAR(MAX), @CODVENDEDOR AS INT, @CODUSUARIO AS INT, @BDDESTINO AS VARCHAR(MAX), @BDORIGEM AS VARCHAR(MAX), @STRSQL AS VARCHAR(MAX) SET @DATAINICIAL='2020-01-01' SET @DATAFINAL = '2020-07-28' SET @NOMEVENDEDOR='HULDA' SET @CODVENDEDOR=1 SET @CODUSUARIO=1 SET @BDORIGEM = 'NFETUBO_AGUAS.dbo.Cnota ' SET @BDDESTINO = 'TUBO_AGUAS.dbo.CPExterno ' SET @STRSQL = ' insert into ' + @BDDESTINO + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL)'+ ' select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal'+ ' from ' + @BDORIGEM + ' where DataNota Between ''' + convert(varchar(10),@DATAINICIAL,23) + ''' AND ''' + convert(varchar(10),@DATAFINAL,23) + '''' EXEC(@STRSQL)
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
Amigo boa tarde,
eu tentei desse jeito mas deu a seguinte mensagem
Mensagem 242, Nível 16, Estado 3, Linha 12
A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo.
o que poderia ser?
EU ACHO QUE TEM ALGUMA COISA HAVER COM O FORMATO DA DATA FINAL
GOSTEI 0
Emerson Nascimento
31/07/2020
me parece que o formato de data está configurado como AAAA-DD-MM
tente trocar o conteúdo inicial da variável @DATAFINAL. assim:
tente trocar o conteúdo inicial da variável @DATAFINAL. assim:
SET @DATAINICIAL='2020-01-01' SET @DATAFINAL = '2020-28-07' -- troquei a posição do dia com o mês
GOSTEI 0
Daniel
31/07/2020
tente assim:
o problema é que na última linha você estava tentando transformar conteúdos DATETIME (@DATAINICIAL, @DATAFINAL) em DATETIME (isso mesmo), e tentando concatenar com uma string.
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
DECLARE @DATAINICIAL DATETIME, @DATAFINAL DATETIME, @NOMEVENDEDOR AS VARCHAR(MAX), @CODVENDEDOR AS INT, @CODUSUARIO AS INT, @BDDESTINO AS VARCHAR(MAX), @BDORIGEM AS VARCHAR(MAX), @STRSQL AS VARCHAR(MAX) SET @DATAINICIAL='2020-01-01' SET @DATAFINAL = '2020-07-28' SET @NOMEVENDEDOR='HULDA' SET @CODVENDEDOR=1 SET @CODUSUARIO=1 SET @BDORIGEM = 'NFETUBO_AGUAS.dbo.Cnota ' SET @BDDESTINO = 'TUBO_AGUAS.dbo.CPExterno ' SET @STRSQL = ' insert into ' + @BDDESTINO + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL)'+ ' select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal'+ ' from ' + @BDORIGEM + ' where DataNota Between ''' + convert(varchar(10),@DATAINICIAL,23) + ''' AND ''' + convert(varchar(10),@DATAFINAL,23) + '''' EXEC(@STRSQL)
também havia um typecast de @BDDESTINO e @BDORIGEM para varchar, sendo que as variáveis já são do tipo varchar.
Como era um typecast desnecessário, retirei.
Amigo boa tarde,
eu tentei desse jeito mas deu a seguinte mensagem
Mensagem 242, Nível 16, Estado 3, Linha 12
A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo.
o que poderia ser?
EU ACHO QUE TEM ALGUMA COISA HAVER COM O FORMATO DA DATA FINAL
amigao muito obrigado deu certo so mudei o type para 105
DECLARE
@DATAINICIAL DATETIME,
@DATAFINAL DATETIME,
@NOMEVENDEDOR AS VARCHAR(MAX),
@CODVENDEDOR AS INT,
@CODUSUARIO AS INT,
@BDDESTINO AS VARCHAR(MAX),
@BDORIGEM AS VARCHAR(MAX),
@STRSQL AS VARCHAR(MAX)
SET @DATAINICIAL='08-06-2020'
SET @DATAFINAL = '08-06-2020'
SET @NOMEVENDEDOR='HULDA'
SET @CODVENDEDOR=1
SET @CODUSUARIO=1
SET @BDORIGEM = 'NFETUBO_AGUAS.dbo.Cnota '
SET @BDDESTINO = 'TUBO_AGUAS.dbo.CPExterno '
SET @STRSQL = ' insert into ' + @BDDESTINO + '(Cliente,DataPedido,VrPedido,DataDigitacao,Agente,NomeCliente,NOTAFISCAL)'+
' select Cliente,DataNota,ValorNota,DataNota,AGENTE,NomeCliente,NotaFiscal'+
' from ' + @BDORIGEM +
' where DataNota Between ''' + convert(varchar(10),@DATAINICIAL,105) + ''' AND ''' + convert(varchar(10),@DATAFINAL,105) + ''''
EXEC(@STRSQL)
GOSTEI 0