SELECT data = hoje/ontem/anteontem no MySQL

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

[ Hits: 19.777 ]

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

Agendando tarefas no cron com horário aleatório

Convertendo arquivos em PDF no Vim

Coderbyte - teste seus conhecimentos em programação!

Navegação fácil no Vim - encontrar próximo e anterior

Indentação automática no Vim

Leitura recomendada

Instalação do MySQL e Workbench no Fedora 25

MySQL: Erro: "mysqld dead but subsys locked" [Resolvido]

Nova versão recomendada do MySQL

Acesso ao servidor MySQL

Instalação do MySQL via atualização de repositório

  

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