INSERIR EM COLUNAS DIFERENTES HORAS DA MESMA DATA
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?
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
Curtidas 0
Melhor post
Willian Silva
16/04/2018
Se for usar o SQL SERVER poderia da uma olhada nesse sql
Se for Usar o MYSQL
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
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
GOSTEI 1
Mais Respostas
Rodrigo Pinto
16/04/2018
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)
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)
GOSTEI 0
Karina Alves
16/04/2018
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.
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.
GOSTEI 0
Willian Silva
16/04/2018
para teste -> http://sqlfiddle.com/#!9/423c2/10
GOSTEI 0
Karina Alves
16/04/2018
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!
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!
GOSTEI 0