SELECT data = hoje/ontem/anteontem no MySQL

Publicado por Fábio Berbert de Paula em 16/06/2020

[ Hits: 20.901 ]

Blog: https://fabio.automatizando.dev

 


SELECT data = hoje/ontem/anteontem no MySQL



Sintaxe testada no MySQL e MariaDB, não faço ideia se o padrão SQL usado funcionará em outros SGBDs como PostgreSQL, Oracle, SQL Server etc.

Quero fazer uma consulta SQL que me retorne todos os registros cujo campo "data" corresponde a hoje:

SELECT * FROM tabela WHERE DATE(data) = CURDATE()

Quero fazer uma consulta SQL que me retorne todos os registros cujo campo "data" corresponde a ontem:

SELECT * FROM tabela WHERE DATE(data) = SUBDATE(CURDATE(), 1)

Quero fazer uma consulta SQL que me retorne todos os registros cujo campo "data" corresponde a anteontem:

SELECT * FROM tabela WHERE DATE(data) = SUBDATE(CURDATE(), 2)

Quero fazer uma consulta SQL que me retorne todos os registros cujo campo "data" corresponde a 7 dias atrás:

SELECT * FROM tabela WHERE DATE(data) = SUBDATE(CURDATE(), 7)

Simples assim. Até a próxima!

Outras dicas deste autor

Como descobrir seu chat_id no Telegram

Magic SysRq key - O botão de pânico no kernel do seu Linux

O inutilitário Gtick

Substituindo o sleep por um belo cronômetro regressivo

Como ajustar o brilho da tela via linha de comando

Leitura recomendada

Erro 2002 (HY000) ao conectar ao MySQL

MySQL - Reset senha root e acesso localhost

Redefinindo a senha de root no MySQL (sem saber a atual)

Erro ao iniciar o MySQL

MySQL - Backup automático de banco de dados com data

  

Comentários
[1] Comentário enviado por NillOliveir em 08/07/2024 - 20:29h

Olá Fábio, Me ajude a desenrolar este select, fazendo um favor:
Faço o select com duas condições e em uma condição quero que mostre os registros com a data >= "maior ou igual" a data corrente

tblClientes(id, name, status, agenda, data_agenda)
status (1 = Ativo, 2 = Inativo)
agenda (1 = Marcada, 2 = Demarcada, 3 = Outras....)


SELECT * FROM tblClientes
WHERE status = 1 And agenda = 1 And data_agenda >= CURDATE()

Aqui acontece que a agenda existe outras opções, então preciso que as outras opções sejam selecionadas
data_agenda >= CURDATE() (Mostrar somente para a condição agenda seja maior ou igual a data corrente)

[2] Comentário enviado por fabio em 09/07/2024 - 01:36h


[1] Comentário enviado por NillOliveir em 08/07/2024 - 20:29h

Olá Fábio, Me ajude a desenrolar este select, fazendo um favor:
Faço o select com duas condições e em uma condição quero que mostre os registros com a data >= "maior ou igual" a data corrente

tblClientes(id, name, status, agenda, data_agenda)
status (1 = Ativo, 2 = Inativo)
agenda (1 = Marcada, 2 = Demarcada, 3 = Outras....)


SELECT * FROM tblClientes
WHERE status = 1 And agenda = 1 And data_agenda >= CURDATE()

Aqui acontece que a agenda existe outras opções, então preciso que as outras opções sejam selecionadas
data_agenda >= CURDATE() (Mostrar somente para a condição agenda seja maior ou igual a data corrente)


Se entendi o que você quer, a sintaxe abaixo deve funcionar:


SELECT * FROM tblClientes
WHERE status = 1
AND (
agenda != 1 OR
(agenda = 1 AND data_agenda >= CURDATE())
);



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts