MySQL NOW函数

时间:2019-11-20 08:52:23  来源:igfitidea点击:

简介:在本教程中,您将学习MySQL NOW()函数并将NOW函数应用于各种环境。

MySQL NOW()函数简介

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

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

SELECT NOW();

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

SELECT NOW() + 0;

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

SELECT NOW(), SLEEP(5), NOW();

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

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

SELECT SYSDATE(), SLEEP(5), SYSDATE();

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

SET time_zone = your_time_zone;

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';

以下语句返回当前日期和时间,现在减去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';

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

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

让我们看看以下示例。

首先,使用三列创建名为tmp的新表:id,title和created_on。
created_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
);

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

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

INSERT INTO tmp(title)
VALUES('Test NOW() function');

第三,从tmp表中查询数据:

SELECT * FROM tmp;

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

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