Função MySQL AGORA()

Resumo : neste tutorial você aprenderá como usar a NOW() função MySQL para obter a data e hora atuais do servidor.

Introdução à função MySQL NOW()

A função MySQL NOW()retorna a data e hora atuais no fuso horário configurado como uma string ou um número no formato 'YYYY-MM-DD HH:MM:DD'ou 'YYYYMMDDHHMMSS.uuuuuu'.

Aqui está a sintaxe da NOW()função:

NOW()Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O tipo retornado da NOW()função depende do contexto onde você a utiliza.

Por exemplo, na instrução a seguir, a NOW()função retorna a data e hora atuais como uma string:

SELECT NOW();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+---------------------+
| NOW()               |
+---------------------+
| 2023-12-30 21:10:54 |
+---------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

No entanto, no contexto numérico, a NOW()função retorna a data e a hora atuais como um número, conforme mostrado no exemplo a seguir:

SELECT NOW() + 0;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+----------------+
| NOW() + 0      |
+----------------+
| 20231230211120 |
+----------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Observe que a NOW()função retorna a data e hora em que a instrução começou a ser executada. Por exemplo:

SELECT NOW(), SLEEP(5), NOW();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+---------------------+----------+---------------------+
| NOW()               | SLEEP(5) | NOW()               |
+---------------------+----------+---------------------+
| 2023-12-30 21:11:36 |        0 | 2023-12-30 21:11:36 |
+---------------------+----------+---------------------+
1 row in set (5.02 sec)Linguagem de código:  JavaScript  ( javascript )

Na consulta, a primeira NOW()função foi executada, a SLEEP(5)função pausou a execução da consulta por 5 segundos e a segunda função NOW() foi executada.

Porém, ambas NOW()as funções retornam o mesmo valor, mesmo quando são executadas em momentos diferentes.

Se você deseja obter o horário exato em que a instrução é executada, use a SYSDATE()função. Por exemplo:

SELECT SYSDATE(), SLEEP(5), SYSDATE();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(5) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2023-12-30 21:11:59 |        0 | 2023-12-30 21:12:04 |
+---------------------+----------+---------------------+
1 row in set (5.01 sec)Linguagem de código:  JavaScript  ( javascript )

Se você deseja alterar o fuso horário do servidor MySQL para ajustar a data e hora atuais retornadas pela NOW()função, use a seguinte instrução:

SET time_zone = your_time_zone;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Cálculos da função MySQL NOW()

Como a NOW()função retorna um número quando é usada em um contexto numérico, você pode usá-la em cálculos, por exemplo, agora mais 1 hora, agora menos 1 hora e agora mais 1 dia.

A instrução a seguir retorna a data e hora atuais, agora menos 1 hora e agora mais 1 hora:

-- mysql now minus 1 hour
SELECT 
  (NOW() - INTERVAL 1 HOUR) 'NOW - 1 hour', 
  NOW(), 
-- mysql now plus 1 hour
  NOW() + INTERVAL 1 HOUR 'NOW + 1 hour';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+---------------------+---------------------+---------------------+
| NOW - 1 hour        | NOW()               | NOW + 1 hour        |
+---------------------+---------------------+---------------------+
| 2023-12-30 20:12:23 | 2023-12-30 21:12:23 | 2023-12-30 22:12:23 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

A instrução a seguir retorna a data e hora atuais, agora menos 1 dia e agora mais 1 dia:

SELECT (NOW() - INTERVAL 1 DAY) 'NOW - 1 day',
        NOW(),
        (NOW() + INTERVAL 1 DAY) 'NOW + 1 day';Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Experimente

+---------------------+---------------------+---------------------+
| NOW - 1 day         | NOW()               | NOW + 1 day         |
+---------------------+---------------------+---------------------+
| 2023-12-29 21:12:37 | 2023-12-30 21:12:37 | 2023-12-31 21:12:37 |
+---------------------+---------------------+---------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Usando a função NOW() como valor padrão para uma coluna

Você pode usar a NOW()função para fornecer um valor padrão para uma coluna DATETIMEou TIMESTAMP.

Quando você omite o valor de data ou hora na INSERTinstrução, o MySQL insere automaticamente a data e hora atuais na coluna cujo valor padrão é NOW(). Por exemplo:

Primeiro, crie uma nova tabela chamada contacts:

CREATE TABLE contacts(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    created_at DATETIME NOT NULL DEFAULT NOW(),
    updated_at DATETIME DEFAULT NOW() ON UPDATE NOW()
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A contactstabela inclui as seguintes colunas:

  • id: esta é a coluna de chave primária da tabela de contatos.
  • name: representa o nome do contato.
  • email: esta coluna armazena o email do contato.
  • created_on: esta coluna possui o valor padrão especificado pela NOW()função.
  • updated_at: esta coluna é definida updated_atcom um valor padrão da data e hora atuais quando uma nova linha é inserida. Além disso, a ON UPDATE NOW()cláusula garante que a coluna seja atualizada automaticamente para a data atual e empata sempre que a linha for atualizada.

Observe que CURRENT_TIMESTAMPe CURRENT_TIMESTAMP()são sinônimos para NOW()que você possa usá-los de forma intercambiável.

Segundo, insira uma nova linha na contactstabela:

INSERT INTO contacts(name, email)
VALUES('Jane Doe', '[email protected]');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, recupere os dados da contactstabela:

SELECT * FROM contacts;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Saída:

+----+----------+----------------------+---------------------+---------------------+
| id | name     | email                | created_at          | updated_at          |
+----+----------+----------------------+---------------------+---------------------+
|  1 | Jane Doe | [email protected] | 2023-12-30 21:36:09 | 2023-12-30 21:36:09 |
+----+----------+----------------------+---------------------+---------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Na INSERTinstrução, não fornecemos os valores das colunas created_ate updated_at. Portanto, eles usam o valor padrão que é a data e hora atuais retornadas pela função NOW().

Quarto, atualize a linha com id 1:

UPDATE contacts
SET name = 'Jane Smith'
WHERE id = 1;Linguagem de código:  JavaScript  ( javascript )

Na instrução UPDATE, não especificamos o valor da coluna updated_at, portanto ela é atualizada no momento em que a linha é atualizada.

Por fim, recupere os dados da tabela de contatos:

SELECT * FROM contacts
WHERE id = 1;

Saída:

+----+------------+----------------------+---------------------+---------------------+
| id | name       | email                | created_at          | updated_at          |
+----+------------+----------------------+---------------------+---------------------+
|  1 | Jane Smith | [email protected] | 2023-12-30 21:36:09 | 2023-12-30 21:37:21 |
+----+------------+----------------------+---------------------+---------------------+
1 row in set (0.00 sec)Linguagem de código:  JavaScript  ( javascript )

Resumo

  • Use a NOW()função para obter a data e hora atuais do servidor.
  • Use DEFAULT NOW()para uma coluna para definir o valor padrão da coluna para a data e hora atuais quando uma linha é inserida.
  • Use ON UPDATE NOW()para uma coluna para definir um padrão para uma coluna para a data e hora atuais quando uma linha é atualizada.

Deixe um comentário

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