SELECT data = hoje/ontem/anteontem no MySQL

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

[ Hits: 21.090 ]

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 fazer "quit" no SED

Habilitar highlight na busca do Vim

Teclas de atalho para navegação entre abas do navegador

Criando um programa CGI com Perl

Mudando o tema do Vim - esquema de cores

Leitura recomendada

MySQL - Recuperar dados em ordem aleatória (randômica)

Nova versão recomendada do MySQL

Instalar o Apache, MySQL e PHP no Oracle Linux 8

Usando a chave UNIQUE para campos em uma tabela MySQL

Liberar 3306 do MySQL no Slackware

  

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