Resumo : neste tutorial, você aprenderá como consultar dados que correspondem à data de hoje do MySQL usando funções de data integradas.
Obtendo a data de hoje do MySQL usando funções de data integradas
Às vezes, você pode querer consultar dados de uma tabela para obter linhas com a coluna de data hoje, por exemplo:
SELECT
column_list
FROM
table_name
WHERE
expired_date = today;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para obter a data de hoje, você usa a CURDATE()
função da seguinte forma:
mysql> SELECT CURDATE() today;
+------------+
| today |
+------------+
| 2017-07-08 |
+------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Alternativamente, você pode obter a parte da data a partir da hora atual retornada pela NOW()
função:
mysql> SELECT DATE(NOW()) today;
+------------+
| today |
+------------+
| 2017-07-08 |
+------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Portanto, a consulta deve mudar para:
SELECT
column_list
FROM
table_name
WHERE
expired_date = CURDATE();
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Se a expired_date
coluna contiver a parte da data e da hora, você deverá usar a DATE()
função para extrair apenas a parte da data e compará-la com a data atual:
SELECT
column_list
FROM
table_name
WHERE
DATE(expired_date) = CURDATE();
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Criando sua função armazenada hoje no MySQL
Se você usa frequentemente a CURDATE()
função em suas consultas e deseja substituí-las pela today()
função para melhorar a legibilidade, você pode criar sua própria função armazenadatoday()
com o seguinte nome :
DELIMITER $$
CREATE FUNCTION today()
RETURNS DATE
DETERMINISTIC
BEGIN
RETURN CURDATE();
END$$
DELIMITER ;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Agora, você pode usar a today()
função da seguinte maneira:
SELECT today();
Saída:
+------------+
| today() |
+------------+
| 2017-07-08 |
+------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Que tal amanhã? Deve ser tão simples quanto a seguinte consulta:
SELECT today() + interval 1 day Tomorrow;
Saída:
+------------+
| Tomorrow |
+------------+
| 2017-07-09 |
+------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
E também ontem também é fácil:
SELECT today() - interval 1 day Yesterday;
Saída:
+------------+
| Yesterday |
+------------+
| 2017-07-07 |
+------------+
1 row in set (0.00 sec)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Conseguir funcionários cujo aniversário é hoje
Às vezes, você deseja recuperar funcionários cujo aniversário é hoje. Vejamos um exemplo.
Primeiro, crie uma tabela chamada employees
:
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
birthday DATE NOT NULL
);
Linguagem de código: PHP ( php )
Segundo, insira algumas linhas na employees
tabela:
INSERT INTO employees (name, birthday)
VALUES
('John Doe', '1990-01-06'),
('Jane Smith', '1985-08-22'),
('Bob Johnson', '1993-03-10'),
('Alice Brown', '1988-11-05'),
('Charlie White', '1995-07-18'),
('Eva Davis', '1982-09-30'),
('Mike Miller', '1998-01-25'),
('Sarah Jones', '1987-06-12'),
('David Taylor', '1991-12-08'),
('Emily Wilson', '1984-04-03');
Linguagem de código: JavaScript ( javascript )
Terceiro, encontre os funcionários cujo aniversário é hoje:
SELECT *
FROM employees
WHERE DAY(birthday) = DAY(CURDATE())
AND MONTH(birthday) = MONTH(CURDATE());
A consulta recupera funcionários cujo mês e dia de aniversário são iguais ao mês e dia de hoje.
Resumo
- Use a função
CURDATE()
ouNOW()
para retornar a data de hoje.