PEGAR PRIMEIRO REGISTRO POR DIA
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
Posts
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
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
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
Clique aqui para fazer login e interagir na Comunidade :)