COMO CONCATENAR DATAS DENTRO DE UMA VARIÁVEL?
31/07/2020
0
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
Posts
31/07/2020
Emerson Nascimento
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.
31/07/2020
Daniel
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?
31/07/2020
Daniel
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
31/07/2020
Emerson Nascimento
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
31/07/2020
Daniel
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)
Clique aqui para fazer login e interagir na Comunidade :)