INSERIR EM COLUNAS DIFERENTES HORAS DA MESMA DATA

16/04/2018

0

Eu tenho uma tabela com dois campos ID e DATA_HORA:

ID | DATA_HORA

ID DATA_HORA
1 2018-03-01 09:06:19.0000000
1 2018-03-01 12:06:19.0000000
1 2018-03-01 13:00:19.0000000
1 2018-03-01 18:00:19.0000000
1 2018-03-02 09:00:00.0000000
1 2018-03-02 12:00:00.0000000
1 2018-03-02 13:00:00.0000000
1 2018-03-02 18:00:00.0000000
1 2018-03-05 09:00:00.0000000
1 2018-03-05 12:00:00.0000000
1 2018-03-05 13:00:00.0000000
1 2018-03-05 18:00:00.0000000
2 2018-03-01 09:06:19.0000000
2 2018-03-01 12:06:19.0000000
2 2018-03-01 13:00:19.0000000
2 2018-03-01 18:00:19.0000000
2 2018-03-02 09:00:00.0000000
2 2018-03-02 12:00:00.0000000
2 2018-03-02 13:00:00.0000000
2 2018-03-02 18:00:00.0000000
2 2018-03-05 09:00:00.0000000
2 2018-03-05 12:00:00.0000000
2 2018-03-05 13:00:00.0000000
2 2018-03-05 18:00:00.0000000

Mas preciso separar em colunas os horários do mesmo dia:

ID_FUNCIONARIO DATA_HORA Entrada1 Saida1 Entrada2 Saida2
1 01/03/2018 09:06:19 12:06:19 13:00:19 18:00:19
2 01/03/2018 09:06:19 12:06:19 13:00:19 18:00:19
1 02/03/2018 09:00:00 12:00:00 13:00:00 18:00:00
2 02/03/2018 09:00:00 12:00:00 13:00:00 18:00:00
1 05/03/2018 09:00:00 12:00:00 13:00:00 18:00:00
2 05/03/2018 09:00:00 12:00:00 13:00:00 18:00:00

Consegui exibir somente o primeiro e último registro do dia:

SELECT ID_FUNCIONARIO, CONVERT(CHAR(10),DATA_HORA,103) AS DATA_HORA, MIN(DATA_HORA) AS Entrada1, MAX(DATA_HORA) AS Saida2 FROM ACESSO GROUP BY ID_FUNCIONARIO, CONVERT(CHAR(10),DATA_HORA,103)

ID_FUNCIONARIO DATA_HORA Entrada1 Saida2
1 01/03/2018 2018-03-01 09:06:19.0000000 2018-03-01 18:00:19.0000000
2 01/03/2018 2018-03-01 09:06:19.0000000 2018-03-01 18:00:19.0000000
1 02/03/2018 2018-03-02 09:00:00.0000000 2018-03-02 18:00:00.0000000
2 02/03/2018 2018-03-02 09:00:00.0000000 2018-03-02 18:00:00.0000000
1 05/03/2018 2018-03-05 09:00:00.0000000 2018-03-05 18:00:00.0000000
2 05/03/2018 2018-03-05 09:00:00.0000000 2018-03-05 18:00:00.0000000

Como faço para consultar todos os horários do mesmo dia?
Karina Alves

Karina Alves

Responder

Post mais votado

16/04/2018

Se for usar o SQL SERVER poderia da uma olhada nesse sql
SELECT 
	ID AS Funcionario, 
	CONVERT(CHAR(10), p1.data_hora,103) AS Data_Ponto,
	Horarios = STUFF((
          SELECT ',' + SUBSTRING(CONVERT(VARCHAR,p2.data_hora,114),1,8)
          FROM ponto p2
          WHERE p2.ID = p1.ID AND CONVERT(CHAR(10), p2.data_hora,103) = CONVERT(CHAR(10), p1.data_hora,103)
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM
	ponto as p1
WHERE p1.ID = 1
AND CONVERT(CHAR(10), p1.data_hora,103) BETWEEN @DATAINICIAL AND @DATAFINAL
GROUP BY p1.ID, p1.data_hora



Se for Usar o MYSQL

SELECT 
  id As Codigo,
  CAST(data_hora AS DATE) AS Data_Agora,
  GROUP_CONCAT(DATE_FORMAT(data_hora, '%T')) As Horarios
FROM 
  PONTO
GROUP BY ID, Data_Agora


Dai no retorno do campo horários, você pode da um explode com separador , e assim você tem um array com os horarios de entrada e saida, após isso é so monta o front

Willian Silva

Willian Silva
Responder

Mais Posts

16/04/2018

Rodrigo Pinto

Tenta isso.
SELECT ID_FUNCIONARIO, CONVERT(CHAR(10),DATA_HORA,103) AS DATA_HORA, MIN(DATA_HORA) AS Entrada1, MAX(DATA_HORA) AS Saida2 FROM ACESSO where DAY(DATA_HORA) = 2 GROUP BY ID_FUNCIONARIO, CONVERT(CHAR(10),DATA_HORA,103)
Responder

16/04/2018

Karina Alves

Agradeço muito a resposta, mas não deu certo, porque continua listanto o primeiro e o último registro do dia.
Preciso que liste a data, o primeiro horário, segundo horário e assim sucessivamente.
Vai ficar ID | DATA | ENTRADA1 | SAIDA1 | ENTRADA2 | SAIDA2 | ENTRADA3 | SAIDA3
Ou seja, int | date | time | time | time | time | time | time.
Responder

16/04/2018

Willian Silva

para teste -> http://sqlfiddle.com/#!9/423c2/10
Responder

16/04/2018

Karina Alves

Cara sensacional!
Não tinha achado nenhum material na net, nenhum amigo fera meu me deu a resposta e você conseguiu e deixou prontinho pra eu criar o fronte!
Muito obrigada!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar