Monica Tinoco Postado Julho 4, 2007 Denunciar Share Postado Julho 4, 2007 Oi pessoal,estou com um problema ao executar qualquer consulta no sql. O estranho é que são consultas que já funcionavam antes.Se eu passo o parâmetro direto ela roda em 10 segundos, se eu passo o parâtro ela até roda mas demora mais de 8 minutos.Alguém já viu este problema?Ex.: SET NOCOUNT ONDECLARE@inicio DATETIME,@fim DATETIME,@chr_inicio CHAR(10),@chr_fim CHAR(10)SET @chr_inicio = '01/07/2007'SET @chr_fim = '04/07/2007'SET @chr_inicio = SUBSTRING(@chr_inicio, 7, 4) + '-' + SUBSTRING(@chr_inicio, 4, 2) + '-' + SUBSTRING(@chr_inicio, 1, 2)SET @chr_fim = SUBSTRING(@chr_fim, 7, 4) + '-' + SUBSTRING(@chr_fim, 4, 2) + '-' + SUBSTRING(@chr_fim, 1, 2)SET @inicio = CONVERT(DATETIME, @chr_inicio + ' 00:00:00')SET @fim = CONVERT(DATETIME, @chr_fim + ' 23:59:59')SELECT data_lamin = CONVERT(CHAR(10), lam.data, 103), hora_lamin = CONVERT(CHAR(5), lam.data, 108), OPM , OPO FROM pm (NOLOCK)INNER JOIN lam (NOLOCK) ON lam.OPM = pm.OPMWHERE lam.data BETWEEN @inicio AND @fimComo eu disse se eu passar como abaixo, ele roda:WHERE lam.data BETWEEN '2007-07-01 00:00' AND '2007-07-04 23:59'Obrigada.Mônica Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Julho 4, 2007 Denunciar Share Postado Julho 4, 2007 talvez ele demore pra montar a data no formato que você quer. mas eu to vendo que essa sua data não é um parametro que vem de fora, mas sim uma variavel criada dentro da propria procedure e, ainda por cima, o valor delas é atribuido dentro da propria procedure.nesse caso, se no modo antigo:WHERE lam.data BETWEEN '2007-07-01 00:00' AND '2007-07-04 23:59'que alem de ser bem mais simples, funcionava certinho, porque você quer trocar pra essa forma toda complicada?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Gesiel -- Postado Julho 7, 2007 Denunciar Share Postado Julho 7, 2007 Monica,veja se melhora declarando @inicio e @fim como SMALLDATETIME. Olhe os resultados:1) como datetime:2007-01-07 00:00:00.0002) como smalldatetime:2007-01-07 00:00:00é sutil, mas pode ser a diferença.abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Monica Tinoco
Oi pessoal,
estou com um problema ao executar qualquer consulta no sql. O estranho é que são consultas que já funcionavam antes.
Se eu passo o parâmetro direto ela roda em 10 segundos, se eu passo o parâtro ela até roda mas demora mais de 8 minutos.
Alguém já viu este problema?
Ex.:
SET NOCOUNT ON
DECLARE
@inicio DATETIME,
@fim DATETIME,
@chr_inicio CHAR(10),
@chr_fim CHAR(10)
SET @chr_inicio = '01/07/2007'
SET @chr_fim = '04/07/2007'
SET @chr_inicio = SUBSTRING(@chr_inicio, 7, 4) + '-' + SUBSTRING(@chr_inicio, 4, 2) + '-' + SUBSTRING(@chr_inicio, 1, 2)
SET @chr_fim = SUBSTRING(@chr_fim, 7, 4) + '-' + SUBSTRING(@chr_fim, 4, 2) + '-' + SUBSTRING(@chr_fim, 1, 2)
SET @inicio = CONVERT(DATETIME, @chr_inicio + ' 00:00:00')
SET @fim = CONVERT(DATETIME, @chr_fim + ' 23:59:59')
SELECT data_lamin = CONVERT(CHAR(10), lam.data, 103),
hora_lamin = CONVERT(CHAR(5), lam.data, 108),
OPM ,
OPO
FROM pm (NOLOCK)
INNER JOIN lam (NOLOCK) ON lam.OPM = pm.OPM
WHERE lam.data BETWEEN @inicio AND @fim
Como eu disse se eu passar como abaixo, ele roda:
WHERE lam.data BETWEEN '2007-07-01 00:00' AND '2007-07-04 23:59'
Obrigada.
Mônica
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.