Como obter a data de hoje do MySQL

MySQL hoje

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_datecoluna 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 employeestabela:

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()ou NOW()para retornar a data de hoje.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *