MySQL NOW Function

摘要:在本教程中,您将了解MySQL NOW()函数并在各种上下文中应用NOW函数。

MySQL NOW()函数简介

MySQL NOW()函数以'YYYY-MM-DD HH:MM:DD''YYYYMMDDHHMMSS.uuuuuu'格式的字符串或数字形式返回配置时区中的当前日期和时间。

NOW()函数的返回类型取决于使用它的上下文。例如,在以下语句中, NOW()函数以字符串形式返回当前日期和时间:

SELECT NOW();Code language: SQL (Structured Query Language) (sql)

试试看

MySQL NOW function

但是,在以下示例所示的数字上下文中, NOW()函数以数字形式返回当前日期和时间:

SELECT NOW() + 0;Code language: SQL (Structured Query Language) (sql)

试试看

MySQL NOW 函数返回一个数字

请注意, NOW()函数返回语句开始执行的常量日期和时间。请参见以下示例:

SELECT NOW(), SLEEP(5), NOW();Code language: SQL (Structured Query Language) (sql)

试试看

MySQL NOW execute multiple times

在查询中,执行第一个NOW()函数, SLEEP(5)函数暂停查询的执行 5 秒,然后执行第二个NOW()函数。然而,尽管两个NOW()函数在不同时间执行,但它们返回相同的值。

如果你想获得语句执行的准确时间,你需要使用SYSDATE()来代替;请参见以下示例:

SELECT SYSDATE(), SLEEP(5), SYSDATE();Code language: SQL (Structured Query Language) (sql)

试试看

MySQL SYSDATE function

如果要更改 MySQL 服务器的时区以调整NOW()函数返回的当前日期和时间,请使用以下语句:

SET time_zone = your_time_zone;Code language: SQL (Structured Query Language) (sql)

MySQL NOW()函数计算

由于NOW()函数在数字上下文中使用时会返回一个数字,因此您可以在计算中使用它,例如现在加 1 小时、现在减 1 小时和现在加 1 天。

以下语句返回当前日期和时间,现在减 1 小时,现在加 1 小时:

       -- 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';Code language: SQL (Structured Query Language) (sql)

试试看

MySQL 现在减 1 小时,现在加 1 小时

以下语句返回当前日期和时间,现在减 1 天,现在加 1 天:

        -- mysql now minus 1 day
SELECT (NOW() - INTERVAL 1 DAY) 'NOW - 1 day',
        NOW(),
        -- mysql now plus 1 day
        (NOW() + INTERVAL 1 DAY) 'NOW + 1 day';Code language: SQL (Structured Query Language) (sql)

试试看

MySQL 现在减 1 天,现在加 1 天

使用 MySQL NOW()函数为列提供默认值

您可以使用NOW()函数为DATETIMETIMESTAMP列提供默认值。当您在INSERT语句中省略日期或时间值时,MySQL 会将当前日期和时间插入到默认值为NOW()的列中。

让我们看一下下面的例子。

首先,创建一个名为tmp新表,其中包含三列: idtitlecreated_oncreated_on列有一个由NOW()函数指定的默认值。

CREATE TABLE tmp(
    id INT PRIMARY KEY AUTO_INCREMENT,
    title VARCHAR(255) NOT NULL,
    created_on DATETIME NOT NULL DEFAULT NOW() -- or CURRENT_TIMESTAMP
);Code language: SQL (Structured Query Language) (sql)

请注意, CURRENT_TIMESTAMPCURRENT_TIMESTAMP()NOW()的同义词,因此您可以互换使用它们。

其次,将新行插入tmp表中,而不指定created_on列的值:

INSERT INTO tmp(title)
VALUES('Test NOW() function');Code language: SQL (Structured Query Language) (sql)

三、从tmp表中查询数据:

SELECT * FROM tmp;Code language: SQL (Structured Query Language) (sql)
MySQL NOW 作为默认值

created_on列的值已更新为执行INSERT语句的当前日期和时间。

在本教程中,我们向您介绍了 MySQL NOW()函数,该函数返回语句执行的当前日期和时间。

本教程有帮助吗?