Fórum PEGAR PRIMEIRO REGISTRO POR DIA #580536
25/04/2017
0
Preciso de um help quanto a elaboração de uma query.
Tenho uma tabela onde é registrado o HORIMETRO de um carro e a DATA/HORA de sua inserção no banco.
Preciso DE uma query que me retornar o primeiro HORIMETRO por dia.
Segue exemplo da tabela:
HOR DATA_HORIMETRO
253438 2016-10-13 18:52:28
253438 2016-10-13 18:52:28
253438 2016-10-13 18:52:32
253438 2016-10-14 14:46:24
253438 2016-10-14 14:48:30
253438 2016-10-14 14:52:43
253438 2016-10-14 15:39:08
253438 2016-10-14 15:44:09
253438 2016-10-17 08:17:54
253438 2016-10-17 08:50:11
253438 2016-10-17 08:57:18
253438 2016-10-17 09:02:19
253438 2016-10-17 09:22:21
253438 2016-10-17 14:20:51
253438 2016-10-18 08:25:09
253438 2016-10-18 08:26:19
253438 2016-10-18 08:58:39
Ricardson Couto
Curtir tópico
+ 0Posts
28/04/2017
Calebe Menezes
Você tem mais alguma coluna, tipo a coluna de id?
Você poderia limitar a query para trazer o primeiro resutlado ordenando pela data mais antiga do dia.
Você iria precisar de um WHERE e um ORDER BY para isso.
Tá meio misturado os dados e não consegui identificar o que é o que aí.
Passa as colunas da tabela para eu ver
Gostei + 0
04/05/2017
Rafael Oliveira
para realizar essa consulta, na minha opinião o necessário é fazer um tratamento nessa coluna, para que fique somente a parte do campo data hora.
Fiz uns procedimentos para simular sua dúvida e desenvolvi o tratamento e as consultas para conseguir trazer a primeira do dia corrente e de qualquer dia que desejar.
Espero ter te ajudado e desejo boa sorte em sua jornada!
/* Criei uma tabela chamada horimetro com a coluna DATA_HORIMETRO (NVARCHAR) E HORA (DATETIME)*/
/* INSERI ALGUNS VALORES PARA TESTE */
USE [TESTE]
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-13 18:52:28')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-13 18:52:28')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-13 18:52:32')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-14 14:46:24')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-14 14:48:30')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-14 14:52:43')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-14 15:44:09')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-17 08:17:54')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-17 08:50:11')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-17 08:57:18')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-17 09:02:19')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-17 09:22:21')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-17 14:20:51')
GO
INSERT INTO [dbo].[HORIMETRO]
([DATA_HORIMETRO])
VALUES
('253438 2016-10-18 08:25:09')
GO
SELECT *
FROM HORIMETRO
SELECT RTRIM(LTRIM(SUBSTRING(DATA_HORIMETRO,8,20)))
FROM HORIMETRO
/* Convertendo para data e pegando depois do código, para ficar somente com a data*/
BEGIN TRAN
UPDATE HORIMETRO
SET HORA = CAST(RTRIM(LTRIM(SUBSTRING(DATA_HORIMETRO,8,20))) AS datetime)
--COMMIT
ROLLBACK
/*Para pegar a primeira do dia corrente*/
SELECT TOP(1) *
FROM HORIMETRO
WHERE
YEAR(HORA) = YEAR(GETDATE())
AND MONTH(HORA) = MONTH(GETDATE())
AND DAY(HORA) = DAY(GETDATE())
ORDER BY HORA
/*Para pegar a primeira de qualquer dia que desejar*/
SELECT TOP(1) *
FROM HORIMETRO
WHERE
YEAR(HORA) = 2016
AND MONTH(HORA) = 10
AND DAY(HORA) = 13
ORDER BY HORA DESC
Gostei + 0
04/05/2017
Rafael Oliveira
/*Para pegar a primeira de qualquer dia que desejar*/ SELECT TOP(1) * FROM HORIMETRO WHERE YEAR(HORA) = 2016 AND MONTH(HORA) = 10 AND DAY(HORA) = 13 ORDER BY HORA ASC
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)