Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Consulta com data,que não está dando certo.


Rafael Gazzatte

Question

Amigos,bom dia,aqui estou eu e com uma duvida,e mais uma vez referente a datas,

existe um registro no banco de dados assim :

Onde a máquina tem o inicio em 20/09/2011;

e a máquina tem o final em 21/09/2011

use [BD_PRINCIPAL_MES]

--Datas (início e final)

declare @DT_I as DateTime
declare @DT_F as Datetime

--Horas-------------------

declare @HR0 as datetime
declare @HR6 as datetime
declare @HR14 as datetime
declare @HR22 as datetime
declare @HR599 as datetime
declare @HR1399 as datetime
declare @HR2199 as datetime
declare @HR2399 as datetime

--Parametros---------------

set @DT_I = '20110920'
set @DT_F = '20110921'
set @HR0 = '00:00:00'
set @HR6 = '06:00:00'
set @HR14 = '14:00:00'
set @HR22 = '22:00:00'
set @HR599 = '05:59:59'
set @HR1399 = '13:59:59'
set @HR2199 = '21:59:59'
set @HR2399 = '23:59:59'
Passei primeiramente uns parametros e abaixo fiz o corpo da consulta :
SELECT ID_MAQUINA_PARADAS,DT_INICIO ,DT_FIM 
,CONVERT(VARCHAR(19),DT_INICIO,103) AS DT_INI
,CONVERT(VARCHAR(19),DT_INICIO,108) AS HRA_INI
,CONVERT(VARCHAR(19),DT_FIM,103) AS DT_FIN
,CONVERT(VARCHAR(19),DT_FIM,108) AS HR_FIN
,DATEDIFF(MINUTE,DT_INICIO,DT_FIM)  AS TMIN FROM SPI_TB_MAQUINA_PARADAS
WHERE (ID_MAQUINA_PARADAS = 449935) and DT_INICIO >= @DT_I and DT_FIM <= @DT_F
Com a consulta acima,não obtenho resultados, mas com o codigo abaixo apenas utilizando como parametro
SELECT ID_MAQUINA_PARADAS,DT_INICIO ,DT_FIM 
,CONVERT(VARCHAR(19),DT_INICIO,103) AS DT_INI
,CONVERT(VARCHAR(19),DT_INICIO,108) AS HRA_INI
,CONVERT(VARCHAR(19),DT_FIM,103) AS DT_FIN
,CONVERT(VARCHAR(19),DT_FIM,108) AS HR_FIN
,DATEDIFF(MINUTE,DT_INICIO,DT_FIM)  AS TMIN FROM SPI_TB_MAQUINA_PARADAS
WHERE (ID_MAQUINA_PARADAS = 449935) and DT_INICIO >= @DT_I

Quando rodo a consulta acima,tenho um resultado que é justamente o que estou procurando.

O Grande x da questão,o que eu fiz de errado na primeira consulta para não obter resultados,afinal eu declarei a

DT_F com a data que eu queria,ou eu declarei errado?

Obrigado mais uma vez a ajuda de todos,consultas com datas é o que ando apanhando mais ultimamente,rs.

A minha meta nessa consulta era utilizar um range,que a data inicial seja maior ou igual a DT_I, and , data final seja menor ou igual DT_F.

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Boa tarde Rafael,

Dê uma olhada no resultado da segunda consulta: há registros que são menores que q @DT_F? Se tiver, dê uma olhada nas horas.

Apenas para esclarecer: no sql, quando você coloca a data 21-09-2011 e não coloca as horas, o sql interpreta esta data sendo 21-09-2011 00:00:00.000.

Se colocar: Data > 21-09-2011, teoricamente você quer as datas a partir de 22-09-2011. Mas temos q levar em consideração as horas na data. O sql pegará desde às 00:00 horas do dia 21 em diante.

Link to comment
Share on other sites

  • 0

Fulvio,bom dia!

Está certo,eu coloquei aqui a mesma consulta com data 22,e obtive resultados,o que estava matando provavelmente era o fato de eu estar colocando data 21 sem o horario,como você mesmo disse,entrava com "00:00:00.000",o que era o suficiente para já não pegar o registro que eu queria.

Muito Obrigado Fulvio,me ajuda sempre,não sabia desse fato de que quando colocava apenas data o SQL zerava o horario.

Precisando de qualquer coisa que eu possa ajudar,estamos aqui.

Forte abraço!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...