Ir para conteúdo
Fórum Script Brasil

Brenno

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Posts postados por Brenno

  1. Ola,  por padrão seria interessante você usar formato americano, porém isso detende de usa necessidade, o formato que você manipula pela sua aplicação, segue um exemplo. 

    SELECT PESSOA.MATRICULA, PESSOA.NOME, PONTOS.DATADIA
    FROM PESSOA
    INNER JOIN PONTOS
    ON PESSOA.MATRICULA = PONTOS.MATRICULA 
    WHERE CAST(datadia AS Date) Between '2019-03-08' AND '2019-03-08'

    Quando o branco retorna o valor, data no caso 2019-03-08, em sua aplicação você pode formata 08/03/2019, esse caso que mostrei esta usando datadia timestamp, 2019-03-08 12:00:00.

    Espero que ajude :

  2. Douglas Carlos só tenho que agradecer pela ajuda, você fenomenal.

    Tenho que estuda para entender, vi que está usando coalesce uma função, o meu nível de conhecimento e muito a baixo (rsrsrs).

    Tinha feito da seguinte forma a baixo, porém essa sua solução e fantástica, vou usar.

     

    CASO 1

    SELECT PESSOA.MATRICULA, PESSOA.NOME, PONTOS.DATADIA

    FROM PESSOA

    INNER JOIN PONTOS

    ON PESSOA.MATRICULA = PONTOS.MATRICULA AND PESSOA.MATRICULA = 1010

    WHERE CAST(datadia AS Date) Between '2019-03-26' AND '2019-03-26'

     

    1010;"ASIS DE OLIVEIRA";"2019-03-26 12:00:33.096"

    1010;"ASIS DE OLIVEIRA";"2019-03-26 15:00:40.113"

    1010;"ASIS DE OLIVEIRA";"2019-03-26 16:05:47.489"

    1010;"ASIS DE OLIVEIRA";"2019-03-26 18:00:00.265"

     

    Pego esses valores coloco em variável e realizo os cálculos, essa situação, a pessoa teve seu dia trabalho de 4:55, sabendo que essa pessoa trabalha 6:00 por dia, 12:00 as 18:00, o calulo e feito usando somente horas e minutos.

    No dia normal de trabalho a pessoa tem 2 registro, porém pode ter mais ou somente um.

    Tem momento que a pessoa esquece de registar o ponto, porém pode ser justificado manualmente pelo gesto responsável.

    CASO 2

    SELECT PESSOA.MATRICULA, PESSOA.NOME, PONTOS.DATADIA

    FROM PESSOA

    INNER JOIN PONTOS

    ON PESSOA.MATRICULA = PONTOS.MATRICULA AND PESSOA.MATRICULA = 1212

    WHERE CAST(datadia AS Date) Between '2019-03-26' AND '2019-03-26'

     

    1212;"RONALDO OLIVEIRA";"2019-03-26 12:00:33.096"

    1212;"RONALDO OLIVEIRA";"2019-03-26 15:00:40.113"

    1212;"RONALDO OLIVEIRA";"2019-03-26 16:00:47.489"

     

    No caso 2, e pessoa esqueceu de registar o ponto de saída, as 18:00 no caso.

    CASO 3

     

    SELECT PESSOA.MATRICULA, PESSOA.NOME, PONTOS.DATADIA

    FROM PESSOA

    INNER JOIN PONTOS

    ON PESSOA.MATRICULA = PONTOS.MATRICULA AND PESSOA.MATRICULA = 1212

    WHERE CAST(datadia AS Date) Between '2019-03-01' AND '2019-03-30'

     

    1212;"RONALDO OLIVEIRA";"2019-03-01 12:00:33.096"

    1212;"RONALDO OLIVEIRA";"2019-03-01 18:00:40.113"

    1212;"RONALDO OLIVEIRA";"2019-03-02 12:00:47.489"

    1212;"RONALDO OLIVEIRA";"2019-03-02 18:00:47.489"

    1212;"RONALDO OLIVEIRA";"2019-03-04 12:00:47.489"

    1212;"RONALDO OLIVEIRA";"2019-03-04 12:00:47.489"

    1212;"RONALDO OLIVEIRA";"2019-03-04 18:00:47.489"

    1212;"RONALDO OLIVEIRA";"2019-03-05 12:00:47.489"

    1212;"RONALDO OLIVEIRA";"2019-03-05 18:00:47.489"

    …..

    No caso 3 onde a pessoa não registrou o ponto de saída, somente de entrada.

    Dentro dessa pesquisa e possível tira a batida ímpares?

    Imagem somente para ilustrar a ideia. 

    Desde já agradeço pela ajuda e atenção.

     

     

  3. Ola, 

    Estou com duvida para realizar a seguinte tarefa, ou não sei! desculpe minha ignorância. 

    Tenho uma tabela chamada ponto com chave composta, atributo matricula e datadia, do tipo TIMESTAMP.

    No dois exemplo abaixo a pessoa entra e sai da empresa, dentro de sua jornada de trabalho, sendo que contem duas jornadas de trabalho 08:00 as 12:00 é 12 :00 as 18:00.

    No exemplo 1, a matricula 1212 entrou para sua jornada no horário normal 12:00, porem teve que sair para resolver um problema particular saiu as 15:00, logo voltou as 16:00 é esqueceu de bater o ponto de sair da empresa, que seria 18:00.

    No exemplo 2, a matricula 1313 a pessoa fez sua jornada normal de 08:00 as 12:00

    Tenho que fazer um calcular para sabe se esta com horas positivas ou negativas.

    segue abaixo a table para melhor entendimento.

    CREATE TABLE pontos
    (
      matricula integer NOT NULL,
      datadia timestamp without time zone NOT NULL,
      CONSTRAINT chave_primaria_composta PRIMARY KEY (matricula, datadia),
      CONSTRAINT chave_primaria FOREIGN KEY (matricula)
          REFERENCES pessoa (matricula) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )

    Exemplo 1 

    Matricula                   Data dia

    1212        2019-03-08 12:00:00
    1212        2019-03-08 15:00:00
    1212        2019-03-08 16:00:00

    soma:  Horas trabalhadas -> 

    Exemplo 2 

    Matricula              Data dia

    1313                 2019-03-08 08:00:00
    1313                 2019-03-08 12:00:00

    soma:  Horas trabalhadas -> 04:00:00

     

    Obrigado pela atenção e ajuda.
     

×
×
  • Criar Novo...