INSERIR EM COLUNAS DIFERENTES HORAS DA MESMA DATA
16/04/2018
0
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
Post mais votado
16/04/2018
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
Mais Posts
16/04/2018
Rodrigo Pinto
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)
16/04/2018
Karina Alves
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.
16/04/2018
Karina Alves
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!
Clique aqui para fazer login e interagir na Comunidade :)