MySQL NOW函数
简介:在本教程中,您将学习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()函数,该函数返回执行语句的当前日期和时间。