6
respostas

Consulta semanal

Boa noite, pessoal! Possuo um gráfico, onde puxo as informações do BD para alimentá-lo, porém estou pretendendo fazer isso semanalmente, sendo que ao se encerrar uma semana, comece a puxar os dados da semana corrente, qual o comando que posso utilizar para apresentar os dados desta forma? Obrigado

6 respostas

Oi João, tudo bem? Não sei se entendi bem, você quer um comando que faça um select na tabela do banco considerando a semana atual, é isso?

Tudo e com você? Isso mesmo. Quero um select com os dados da semana (de domingo a sábado) e ao chegar no domingo novamente atualizar com os dados da nova semana. Porém gostaria de saber como apresentar tais informações em um gráfico de colunas. Obrigado pelo retorno.

Existem várias formas de resolver esta questão.

Com a função YEARWEEK() você pode retornar um valor único referente a semana do ano. Ela possui dois parâmetros, a data e um número que identica se a semana começa no domingo (0) ou na segunda (1)

SELECT *
FROM minha_tabela
WHERE YEARWEEK(data_cadastro, 1) = YEARWEEK(NOW(), 1)

Se o seu conceito de semana é diferente (por exemplo, a sua semana de trabalho começa na quarta), você vai precisar fazer algo mais complexo:

SELECT *
FROM minha_tabela
WHERE data_cadastro
    BETWEEN DATE_SUB(DATE(NOW()), INTERVAL (WEEKDAY(NOW()) - @weekday + 7) % 7 DAY)
        AND DATE_ADD(DATE(NOW()), INTERVAL 6 - (WEEKDAY(NOW()) - @weekday + 7) % 7 DAY)

Substitua @weekday por um número (0 domingo, 1 segunda, 2 Terça, 3 Quarta, 4 Quinta, 5 Sexta, 6 Sábado.

Algo que você não pediu, mas caso você queira os 7 últimos dias a partir da data atual, pode fazer assim:

SELECT  *
FROM minha_tabela
WHERE data_cadastro >= CURRENT_DATE - INTERVAL 7 DAY
ORDER BY data_cadastro DESC;

Bom dia, Daniel, muito obrigado pelo retorno, mas eu também gostaria de fazer um echo conforme o dia da semana, como que eu poderia fazê-lo, sendo que retornará os números de 0 a 6? Abraços

Dia da semana, você diz "segunda, terça" ? Nesse caso, você pode usar o DAYNAME() informando a data: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayname

Muito provavelmente o nome vai aparecer em Inglês, isso depende de suas configurações de localização do Banco, etc.

Não, gostaria de dar um echo nos dados que estão ligados aos dias da semana. Por exemplo, no domingo tive 5 vendas, na segunda 3 e assim por diante, como se fosse o número de vendas semanalmente. Não sei se consegui explicar melhor o que preciso, qualquer coisa tento explicar de outra forma